在开发包含我实现的两个软件包的应用程序时,我遇到了 relative import 的问题,一个用于功能,另一个用于GUI。
这是实际的应用程序"架构"布局:
{{ variable | inspect }}
我在 main.py
functionality/
|__init__.py
|functionality.py
|config/
|__init__.py
|conf.py
gui/
|__init__.py
|gui.py
文件中导入config
模块并毫无问题地使用它。但是当我将功能模块导入functionality.py
文件并运行它时,我收到以下错误:
main.py
我已经搜索过这个问题并阅读了几本Python书籍,但我找不到任何解决方案。
提前谢谢!
答案 0 :(得分:0)
据我了解,您尝试导入功能。功能,导入配置,但失败。
那是因为当你运行main.py时,在你的模块搜索路径中没有包含'config'之类的模块。检查出来:添加
MyJFrameClass.this.dispose();
在您导入功能之前。搜索路径中有root(main.py所在的位置)和一些默认站点目录。
请参阅此部分:https://docs.python.org/3/tutorial/modules.html#intra-package-references
当它写在那里时,你必须使用相对导入(带有前导点)或写入完整路径(在你的情况下是functional.config)
答案 1 :(得分:-2)
我找到了解决方案!
我在 functional.py 文件中添加了错误导入语句的前导点:
from .config import conf
运行 main.py 文件时工作正常! 但是,让我说我解决了这个问题,因为当我单独运行 functional.py 时导入不起作用,解释器抛出相同的异常
Traceback (most recent call last):
File "/home/youssef/workspace/application/functionality/functionality.py", line 14, in <module>
from .config import conf
SystemError: Parent module '' not loaded, cannot perform relative import
我还必须提一下,我清空了配置包中存在的 __ init __。py 文件,因此它不包含任何import语句。
感谢大家的努力,如果我找到其他解决方案,我会编辑这个答案。