如果是准备在同一个目录下采用相对导入,以下面目录为例
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文件的目录名