您的位置:首页 > 其它

文章标题

2017-12-03 15:47 274 查看

python相对导入错误解析与解决方法

参考Python包的相对导入时出现错误的解决方法

python的相对导入方法:

from . import module
from .. import module


其中,”.”表示当前层级,”..”表示上一层级。但是运行程序时常遇到错误:

ValueError: attempted relative import beyond top-level package


以及

SystemError: Parent module '' not loaded, cannot perform relative import


关于产生错误的原因,参考博客里讲的很清楚,主要是当前的文件夹没有被python的解释器当作package。

解决方法:

检查需要被当作package的各个文件夹是否含有
__init__.py
文件,可以是空但必须要有。

如果只使用相对导入,那么主函数(main.py)入口不能在作为package的文件夹中,因为这样会使得python解释器在文件夹存在
__init__.py
文件的情况下,仍不能将其视为package。

引用参考博客中的例子:

目录树

 testIm/

 –init.py

 –main.py : from Tom import tom

 –Tom/

   –init.py : print(“I’m Tom’s init!”)

   –tom.py : from . import tomBrother, from .. import Kate,print(“I’m Tom!”)

   –tomBrother.py print(I’m Tom’s Brother!)

 –Kate/

   –init.py : print(“I’m Kate’s init!”)

   –kate.py

 运行文件:main.py

此时,
from .. import Kate
会报错,因为上一级文件夹是
testIm
,但是由于在这一层级里有作为主函数入口的
main.py
文件,所以python解释器不能将其视为package,即关于
..
的导入无效。解决方法是将
main.py
移出
testIm
文件夹:

 test/

  –main.py : from testIm.Tom import tom

  –testIm/…

重新运行就不会出错了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: