繁体   English   中英

Python 3模块相对导入错误

[英]Python 3 module relative import error

在开发包含两个我实现的软件包的应用程序时,我遇到了相对导入的问题,一个用于功能,另一个用于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书,但是没有找到任何解决方案。

先感谢您!

据我了解,您尝试导入functional.functionity,它导入配置,但失败。

那是因为当您运行main.py时,在模块搜索路径中没有包含“ config”之类的模块。 检查一下:添加

import sys
print (sys.path)

在导入功能之前。 搜索路径中有root(main.py所在的位置)和一些默认站点目录。

请参阅本节: https : //docs.python.org/3/tutorial/modules.html#intra-package-references

如此处所写,您必须使用相对导入(带有前导点)或编写完整路径(您的情况下为functionality.config)

我找到了解决方案!

我在function.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

我还必须提到我清空了config包中存在的__init__.py文件,因此它不包含任何import语句。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM