Python 3模块相对导入错误

时间:2015-12-02 17:45:09

标签: python python-3.x python-import

在开发包含我实现的两个软件包的应用程序时,我遇到了 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书籍,但我找不到任何解决方案。

提前谢谢!

2 个答案:

答案 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语句。

感谢大家的努力,如果我找到其他解决方案,我会编辑这个答案。