You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git子模块中Python相对导入问题:规避“无已知父包”报错

解决Python包作为Git子模块的导入冲突问题

方案1:使用基于包名的绝对导入(推荐)

把module_a.py里的导入语句修改为:

from my_package.module_b import my_utility_function

这种写法能同时适配两种场景:

  • 在my_program中引用时,Python能通过my_package的层级正确找到模块;
  • 独立开发测试my_package时,只需确保Python能识别到my_package作为顶级包:
    • 切换到my_package的上级目录(即包含my_package的文件夹)运行测试;
    • 用python -m pytest tests/命令执行测试,-m参数会自动将当前目录加入模块搜索路径,让Python正确识别my_package结构。

方案2:将my_package安装为可编辑包

在my_package目录下执行以下命令:

pip install -e .

这会把my_package以“可编辑模式”安装到Python的site-packages中,实际代码仍指向本地文件(修改后立即生效)。之后无论你是独立开发测试,还是在my_program中引用,都可以直接使用基于my_package的绝对导入,完全不需要依赖相对导入或手动修改路径。

方案3:临时调整测试文件的路径(应急方案)

如果不想修改包内的导入逻辑,可以在测试文件开头添加代码,手动将my_package的路径加入Python搜索路径:

import sys
from pathlib import Path
# 将my_package所在目录加入sys.path
sys.path.append(str(Path(__file__).parent.parent))

from my_package.module_a import my_function

这种方法虽然不够优雅,但能快速解决独立测试时的导入错误。


内容的提问来源于stack exchange,提问作者Rustle Branch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:08:15