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

Python模块导入兼容问题:单元测试与包环境无法同时正常工作

Python包导入与单元测试兼容解决方案

核心方案:统一绝对导入 + 可编辑模式安装项目

1. 统一包内导入格式

所有包内文件(如src/example/main.py)使用不带src前缀的绝对导入,完全遵循用户安装后的导入逻辑。例如:

# src/example/main.py
from example.dir.internal import some_function

这样pip安装包后,example作为顶层包直接存在于site-packages中,不会出现ModuleNotFoundError。

2. 调整单元测试运行方式

先将项目以可编辑模式安装到测试环境,让测试代码能像外部用户一样识别example包:

  • 执行命令(在项目根目录,即包含setup.cfg的目录):
    pip install -e .
    
  • 之后正常运行测试:
    python -m unittest discover test
    

测试文件(如test/test_main.py)同样使用无src前缀的绝对导入:

# test/test_main.py
import unittest
from example.main import main

class TestMain(unittest.TestCase):
    def test_main(self):
        # 测试逻辑
        pass

方案原理

可编辑模式(-e参数)会将src目录下的包链接到Python的site-packages,使example成为全局可识别的顶层包。不管是包内代码还是测试代码,都使用完全一致的绝对导入路径,从根源上解决了两种场景的导入冲突,既符合Python包规范,又无需依赖相对导入或修改sys.path。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:26:26