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

使用python -m build打包未排除tests目录,求正确配置方法

解决python -m build打包时无法排除tests目录的问题

问题原因

尽管python -m build会间接调用setup.py,但在未配置pyproject.toml的场景下,setuptools的部分行为与直接执行setup.py sdist存在差异,导致find_packages(exclude=['tests'])的排除规则未被正确应用。

可行解决方案

1. 添加pyproject.toml明确指定构建后端

在项目根目录创建pyproject.toml文件,内容如下:

[build-system]
requires = ["setuptools>=65.5.0", "wheel"]
build-backend = "setuptools.build_meta"

该文件会告知build工具使用setuptools作为构建后端,确保setup.py中的所有配置(包括tests目录排除规则)被正确解析执行。

2. 调整find_packages的排除规则写法

将排除规则修改为通配符形式,覆盖tests目录及其所有子目录:

from setuptools import setup, find_packages

setup(
    # 其他项目配置...
    packages=find_packages(exclude=['tests', 'tests.*']),
)

3. 针对非Python包的tests目录处理

如果tests目录下没有__init__.py(即不被识别为Python包),但仍被打包进来,说明是通过include_package_data=True规则包含的。此时需添加exclude_package_data配置:

setup(
    # 其他项目配置...
    include_package_data=True,
    exclude_package_data={'': ['tests/*']},
)

验证步骤

执行python -m build后,解压生成的.tar.gz或.whl文件,检查是否已移除tests目录,确认规则生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:32