Python项目中遇ImportError:尝试相对导入但未知父包问题
解决相对导入报错的方案
针对你遇到的ImportError: attempted relative import with no known parent package问题,提供以下几种可行的解决方式:
方案一:手动添加父目录到Python路径
在test.py开头加入以下代码,将actions目录添加到Python的模块搜索路径中,这样就能直接导入目标模块:
import sys from pathlib import Path # 获取当前文件的父目录的父目录(即actions目录) actions_path = Path(__file__).resolve().parent.parent sys.path.append(str(actions_path)) # 导入目标模块 from business_logics import business_logics
方案二:以模块形式运行测试脚本
不要直接在tests目录下执行python test.py,回到项目根目录(包含package和utils文件夹的目录),使用以下命令运行脚本:
python -m utils.actions.tests.test
这种方式会让Python将整个项目识别为完整的包结构,此时test.py中原本的相对导入语句from ..business_logics import business_logics就能正常生效。
方案三:显式声明包结构
在actions、business_logics、tests三个目录下分别创建空的__init__.py文件(Python 3.3+支持命名空间包,但显式添加该文件能更明确地告知Python这是一个包),之后配合方案二的模块运行方式,相对导入即可正常工作。
内容的提问来源于stack exchange,提问作者Rajasimman R
相关产品推荐
相关产品推荐

