如何从 pyproject.toml 托管库的轮子中排除“tests”文件夹?

Pie*_*aud 7 python setuptools pyproject.toml

我尽力从setup.py托管库转移到纯pyproject.toml库。\n我有以下文件夹结构:

\n
tests\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\ndocs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\nsepal_ui\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\npyproject.toml\n
Run Code Online (Sandbox Code Playgroud)\n

在我的pyproject.toml以下文件和包发现设置中:

\n
tests\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\ndocs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\nsepal_ui\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\npyproject.toml\n
Run Code Online (Sandbox Code Playgroud)\n

在生产轮中,我得到以下信息:

\n
tests\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\ndocs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\nsepal_ui\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <files>\nsepal_ui.egg-info\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 top-level.txt\n
Run Code Online (Sandbox Code Playgroud)\n

查看 top-level.txt,我发现只包含 sepal_ui,所以我的问题很简单,为什么即使不使用额外的“docs”和“tests”文件夹,仍然包含它们?如何摆脱它们?

\n

PS:我知道 MANIFEST.in 解决方案,如果它确实是唯一的解决方案,我会接受它,但我发现在 2 个文件中指定是多余的。

\n

Pie*_*aud 9

有趣的是,它从一开始就起作用......

适合下一个人不想花几个小时无所事事的小型调试工作流程。

pyproject.toml 的配置

以下配置是从存储库根目录下的adocs/和文件夹中删除文件的最低配置。tests/如果您在每个模块中传播测试,请考虑添加*.tests*

[build-system]
requires = ["setuptools>=61.2", "wheel"]

[tool.setuptools]
include-package-data = false

[tool.setuptools.packages.find]
include = ["sepal_ui*"]
exclude = ["docs*", "tests*"]
Run Code Online (Sandbox Code Playgroud)

环境干净

那是我的错误。Python 将信息缓存在build/egg-info文件夹中。egg-info/SOURCE.txtsetuptools 将使用第一步中存储的最少文件:删除以前的构建文件

然后只需运行:

python -m build
Run Code Online (Sandbox Code Playgroud)

检查wheel和tar.gz

从一开始我就只检查 tar.gz(天真地)认为.whl.tar.gz是相同的。并不是当tests文件夹保留在tar.gz文件中时,它就从轮子中消失了。