Python项目相对导入报错:attempted relative import with no known parent package 求助
解决Python相对导入错误:ImportError: attempted relative import with no known parent package
项目结构
Python_Projects/ └── project_1/ ├── __init__.py ├── my_functions.py ├── test.py └── sub_folder_add/ └── add.py
问题场景
add.py中的代码为:
from .my_functions import addition
运行时触发错误:
ImportError: attempted relative import with no known parent package
解决方案
方案1:以包的形式从外部调用
不要直接运行add.py,回到Python_Projects目录,通过包结构调用模块。比如在test.py中写入:
from sub_folder_add.add import addition
随后在Python_Projects目录下执行命令:
python -m project_1.test
方案2:改用绝对导入并调整路径
如果需要直接运行add.py,先将项目根目录加入Python路径,再修改导入语句为绝对路径:
import sys sys.path.append("../../") # 路径根据实际层级调整,确保能定位到project_1 from project_1.my_functions import addition
方案3:使用-m参数以模块方式运行
在Python_Projects目录下,用模块方式启动add.py:
python -m project_1.sub_folder_add.add
这种方式会让Python将project_1识别为父包,相对导入就能正常解析。
原因说明
相对导入的前提是Python将当前文件识别为某个包的组成部分。直接运行add.py时,Python会把它当作独立脚本,而非包内模块,因此无法识别相对导入指向的父包。
内容的提问来源于stack exchange,提问作者namo
相关产品推荐
相关产品推荐

