python-3.x 从setuptools查找包中排除测试文件

a5g8bdjr  于 2023-02-10  发布在  Python
关注(0)|答案(2)|浏览(177)

我试图构建一个没有测试文件的库,如这里所描述的https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html .在pyproject.toml中,我得到了:

[tool.setuptools.packages.find]
include = ['lib*']
exclude = ['^.*tests']

此排除模式正确匹配最后3个元素:

lib
lib.mod1
lib.mod2
lib.utils
lib.mod1.tests
lib.mod2.tests
lib.utils.tests

然而,当我用python -m build构建并安装结果wheel时,我仍然得到发行版中的3个测试模块。

f3temu5u

f3temu5u1#

看起来你使用的是正则表达式语法,但这是一个glob/wildmatch模式,而不是正则表达式。
试试这个:

[tool.setuptools.packages.find]
include = ['lib*']
exclude = ['lib*tests']
vhmi4jdf

vhmi4jdf2#

除了不受支持的正则表达式语法(参见https://stackoverflow.com/a/72524001/1551810),如果测试文件包含在源代码分发(sdist)中,例如,因为存在包含它们的MANIFEST.in,或者因为使用了setuptools-scm包(另请参见https://github.com/pypa/setuptools/issues/3260),则exclude不起作用。
如果测试要从wheel中排除,但要包含在sdist中,解决方案是显式禁用include-package-data(默认为true):

[tool.setuptools]
packages.find.include = ['lib*']
packages.find.exclude = ['lib*tests']
include-package-data = false

相关问题