我有一个项目的以下目录:
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”的模块。
我错过了什么?
3条答案
按热度按时间42fyovps1#
导航到
photo_analyzer/
目录并运行字符串
tpxzln5u2#
我认为你需要使用相对导入。
在
gui/app.py
中,可以使用相对导入从photo_analysis
包导入模块。字符串
import语句中的..表示在目录层次结构中向上一级,然后您可以访问photo_analysis包中的模块。
此外,确保您正在运行
main.py
或根目录(photo_analyzer/
)中导入gui.app
或其他模块的其他脚本。如果直接运行app.py
,它可能找不到photo_analysis
包。这个guide很好地解释了相对导入是如何工作的。
sf6xfgos3#
这是一个棘手的问题。通常python从它们的兄弟文件或兄弟文件夹的查尔兹文件导入。这里如果你想从同一个父文件中导入,那么你必须使用
sys.path.append('.')
其次,它还取决于终端当前的工作目录。如果您当前的工作目录是“photo_analyzer”,则添加以下行即可
字符串
否则,如果您当前的工作目录是“photo_analyzer/gui”,那么您必须添加以下行
型