我的项目有以下目录:
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_utils
和 light_profiles
从 photo_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/