python - 如何导入同一目录或子目录中的模块?

标签 python module importerror

我的项目有以下目录:

photo_analyzer/
│
├── main.py                # Main script to run the photo analyzer
├── gui/                   # Directory for GUI-related files
│   ├── __init__.py        # Package initialization
│   ├── app.py             # Tkinter application class and main GUI logic
│   ├── widgets.py         # Custom Tkinter widgets (if needed)
│   ├── styles.py          # Styling configurations for the GUI
│   └── resources/         # Directory for GUI resources (e.g., icons, images)
│       ├── icon.png       # Application icon
│       └── ...
│
├── photo_analysis/        # Directory for photo analysis-related files
│   ├── __init__.py        # Package initialization
│   ├── photo_utils.py     # Utility functions for photo manipulation
│   ├── light_profiles.py  # Functions to analyze light profiles in photos
│   └── ...

我正在尝试将 photo_utilslight_profilesphoto_analysis 模块导入 gui/app.py 。每当我尝试运行 app.py 时,都会收到以下错误消息:

Traceback (most recent call last):
  File "c:\Users\Josh\Documents\PhotoAnalyzer\gui\app.py", line 6, in <module>
    from photo_analysis import photo_utils
ModuleNotFoundError: No module named 'photo_analysis'

我在两个目录中都有空的 __init__.py 文件,所以我认为这不是问题。我尝试使用 SET PYTHONPATH="C:\Users\Josh\Documents\PhotoAnalyzer\photo_analysis"将 photo_analysis 模块添加到 Python 路径,并且我尝试过也可以使用 sys.path 技术。两者都以与之前相同的错误消息结束。

photo_utils.py 从“gui”模块导入 widgets.py。我可能遇到循环依赖吗?我确实尝试了 text 中解释的解决方法通过将 widgets 导入 photo_utils 中使用它的每个方法,虽然这允许 photo_utils 中的测试主代码正常运行, app.py 仍然给出相同的错误消息,即没有名为“photo_analysis”的模块。

我错过了什么?

最佳答案

这是一个棘手的问题。通常,python 从其同级文件或同级文件夹的子级导入。 在这里,如果您想从来自同一父级的文件导入,则必须使用 sys.path.append('.')

其次,它还取决于终端当前的工作目录。如果您当前的工作目录是“photo_analyzer”,那么添加这些行就可以了

import sys
sys.path.append('.')
import photo_analysis.photo_utils as pa

否则,如果您当前的工作目录是“photo_analyzer/gui”,那么您必须添加这些行

import sys
sys.path.append('./../photo_analysis')
import photo_utils as pa

关于python - 如何导入同一目录或子目录中的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76814661/

相关文章:

python - 想通过以文本格式保留所有行和列来使用 python 创建 excel 文件

Python,numpy 数组代码不适用于 NaN 元素

python - Matplotlib 1.3.0,图例行和文本不匹配

python - 将一个 DataFrame 分组为一个以 arange 为索引的新 DataFrame

python - 为本地模块配置与主文件不同的 Python 日志记录

javascript - 本地主机未加载模块

Haskell 模块命名约定

python - TensorFlow GPU 无法运行,如何安装?

python - 服务器上导入错误,但在本地计算机上工作正常

python - 如何解决 ImportError : dlopen(): Symbol not found:. ... 预期在:平面命名空间