首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3模块相对导入错误

Python 3模块相对导入错误
EN

Stack Overflow用户
提问于 2015-12-02 17:45:08
回答 2查看 1.1K关注 0票数 2

在开发一个包含我实现的两个包的应用程序时,我遇到了一个相对导入问题,一个包用于功能,另一个包用于GUI。

下面是实际的应用程序“架构”布局:

代码语言:javascript
复制
 main.py  
 functionality/  
     |__init__.py  
     |functionality.py  
     |config/  
         |__init__.py  
         |conf.py  
 gui/  
     |__init__.py  
     |gui.py

我在config文件中导入functionality.py模块并使用它,没有任何问题。但是,当我将功能模块导入到main.py文件并运行它时,我会得到以下错误:

代码语言:javascript
复制
from config import conf
ImportError: No module named 'config'

我已经搜索过这个问题并阅读了几本Python书籍,但我没有找到任何解决方案。

提前谢谢你!

EN

回答 2

Stack Overflow用户

发布于 2015-12-02 17:59:29

正如我所理解的,您试图导入导入配置的functionality.functionality,但这失败了。

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

代码语言:javascript
复制
import sys
print (sys.path)

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

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

正如它所写的,您必须使用相对导入(带前导点)或写入完整路径(在您的示例中为functionality.config)。

票数 0
EN

Stack Overflow用户

发布于 2015-12-02 19:05:45

我找到解决办法了!

我在functionality.py文件中添加了一个带前导点的错误导入语句:

代码语言:javascript
复制
from .config import conf

当运行main.py文件时,它工作得很好!

但是,假设我逆转了问题,因为现在导入无法工作,当我单独运行functionality.py时,解释器抛出相同的异常

代码语言:javascript
复制
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文件,因此它不包含任何导入语句。

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34049499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档