相对导入问题总结:attempted relative import with no known parent package
日期: 2018-07-14 分类: 个人收藏 369次阅读
如果是准备在同一个目录下采用相对导入,以下面目录为例
Python3
Package
l A.py
l B.py
在package中有两个文件A.py和B.py两个文件
A.py内容:
Def a():
Print(11111111)
在B.py文件中相对导入A.py文件,来调用a函数
B.py文件内容:
from__future__ import absolute_import
From.A import a
a()
可能会出现attempted relative import with noknown parent package问题
出现这个问题的原因就是在python3当中是默认绝对导入的
在包中要加上__init__.py文件才能证明这个文件夹是一个package
但是呢,系统很容易将__name__赋值成__main__,从而导致把package看做一个顶层文件,而非一个package。可以用print(__name__)来做一个测试,如果输出__main__,就证明是这个问题。
那么怎么解决呢?
Python -m 文件名.package.A.py可以告诉python,这个package是一个package。
这里呢,在dos中可以进入到这个文件,再去执行这句话
这时候再执行 print(__name__)这句话,就会返回包名,与之前的__main__不同,说明问题解决。
其实之所以使用相对导入,目的就是为了比绝对导入更加易于以后别人使用,易于维护,尽量使用相对导入的方法,此外,绝对导入还有一种方法
绝对导入:
在python安装文件的lib中找到site-packages文件,在里面建立一个txt文件,将后缀修改为.pth,在里面写上你的所有要导入的.py文件的目录名
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:python
上一篇: python相关工具使用技巧(pip)
下一篇: gRPC传输协议使用(python教程)
精华推荐