在开发一个包含我实现的两个包的应用程序时,我遇到了一个相对导入问题,一个包用于功能,另一个包用于GUI。
下面是实际的应用程序“架构”布局:
main.py
functionality/
|__init__.py
|functionality.py
|config/
|__init__.py
|conf.py
gui/
|__init__.py
|gui.py我在config文件中导入functionality.py模块并使用它,没有任何问题。但是,当我将功能模块导入到main.py文件并运行它时,我会得到以下错误:
from config import conf
ImportError: No module named 'config'我已经搜索过这个问题并阅读了几本Python书籍,但我没有找到任何解决方案。
提前谢谢你!
发布于 2015-12-02 17:59:29
正如我所理解的,您试图导入导入配置的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)。
发布于 2015-12-02 19:05:45
我找到解决办法了!
我在functionality.py文件中添加了一个带前导点的错误导入语句:
from .config import conf当运行main.py文件时,它工作得很好!
但是,假设我逆转了问题,因为现在导入无法工作,当我单独运行functionality.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文件,因此它不包含任何导入语句。
我感谢大家的努力,如果我找到其他解决办法,我会编辑这个答案。
https://stackoverflow.com/questions/34049499
复制相似问题