我在开发一个应用程序时遇到了相对导入的问题,该应用程序包含我实现的两个包,一个用于功能,另一个用于 GUI。
这是实际的应用程序“架构”布局:
main.py
functionality/
|__init__.py
|functionality.py
|config/
|__init__.py
|conf.py
gui/
|__init__.py
|gui.py
我在 functionality.py 文件中导入了 config 模块并使用它没有任何问题。但是,当我将功能模块导入到 main.py 文件并运行它时,出现以下错误:
from config import conf
ImportError: No module named 'config'
我已经搜索过这个问题并阅读了几本 Python 书籍,但我没有找到任何解决方案。
提前致谢!
请您参考如下方法:
据我了解,您尝试导入 functionality.functionality,这会导入配置,但失败了。
那是因为当您运行 main.py 时,在您的模块搜索路径中没有包含任何类似“config”的模块。检查一下:添加
import sys
print (sys.path)
就在您导入功能之前。在你的搜索路径(main.py 所在的位置)和一些默认站点目录中有根。
请参阅此部分:https://docs.python.org/3/tutorial/modules.html#intra-package-references
如那里所写,您必须使用相对导入(带前导点)或写入完整路径(在您的情况下为 functionality.config)
