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

如何将单元测试随src与tests分离结构的Python包一同发布

打包时包含tests目录的解决方法

场景1:仅tar包(sdist)包含tests(推荐方案)

常规Python打包规范中,wheel包仅携带运行所需的业务代码,tests仅放在sdist中供下游验证、自行跑测试使用,操作如下:

  • 在项目根目录(与src、tests同级目录)新建MANIFEST.in文件,写入以下内容:
recursive-include tests *.py
  • 重新执行打包命令即可,此时生成的tar包会自动包含tests目录,wheel包仍仅保留src下的运行代码,符合通用分发习惯。

场景2:tar包和wheel包都需要包含tests

如果要求wheel中也携带测试代码,需要调整包发现规则,操作如下:

  • 给tests目录添加__init__.py文件,将其标记为Python可识别的包,调整后目录结构:
mypackage/
    src/
        mypackage/
            __init__.py
            hello.py
    tests/
        __init__.py
        test_hello.py
  • 修改setup.cfg的包搜索配置,更新后内容如下:
[metadata]
name = mypackage
version = 1.5.0
author = John Henckel
url = https://test.com
[options]
package_dir =
    = src
packages = find:
[options.packages.find]
where =
    src
    .
# 可选:过滤不需要打包的冗余目录
exclude =
    build
    dist
    *.egg-info
  • 重新执行打包命令即可,此时两种包都会包含tests目录,安装后tests会作为顶级包存在于site-packages目录下。

验证打包结果的命令:

  • 查看tar包内容:tar -tf dist/mypackage-1.5.0.tar.gz
  • 查看wheel包内容:unzip -l dist/mypackage-1.5.0-py3-none-any.whl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:15:03