文章标题
来源:互联网 发布:做数据是什么 编辑:程序博客网 时间:2024/05/22 06:43
python相对导入错误解析与解决方法
参考Python包的相对导入时出现错误的解决方法
python的相对导入方法:
from . import modulefrom .. 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/…
重新运行就不会出错了。
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 工厂模式(Factory Pattern)
- R语言绘图边框
- MongoDB Java使用指南
- 设计模式-几个原则
- 知识学习——设计模式的六大设计原则
- 文章标题
- BP神经网络-XOR运算
- 《图解HTTP》读书心得(三)
- Java笔记12
- Redis、Zookeeper去服务单点问题实践
- Python使用openpyxl读写excel文件
- Android studio问题集
- HTML5 Web SQL
- 守护进程