Python 3模块相对导入错误



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

提前谢谢!

据我所知,您尝试导入functionalty.functionality,它导入配置,但失败了。

这是因为当您运行main.py时,在模块搜索路径中没有任何模块包含类似"config"的内容。看看:添加

import sys
print (sys.path)

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

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

正如它在那里所写的,您必须使用相对导入(带前导点)或编写完整路径(在您的情况下为functionalty.config)

我找到了解决方案!

我在功能中添加了一个前导点错误的导入语句。py文件:

from .config import conf

当运行main.py文件时,它工作得很好
但假设我解决了这个问题,因为现在当我运行功能时导入不起作用。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文件,因此它不包含任何导入语句。

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

相关内容

最新更新