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

如何让Poetry在构建包时排除tests/not_this_dir目录?

解决Poetry构建时排除tests子目录的问题

正确的pyproject.toml配置方式

核心思路是先通过include声明要包含整个tests目录,再用exclude精准排除目标子目录,注意glob语法要覆盖目录下所有内容:

[tool.poetry]
name = "your-package-name"
version = "0.1.0"
# 其他基础配置(作者、描述等)...

include = [
    "tests/**/*",  # 递归包含tests目录下所有文件和子目录
]

exclude = [
    "tests/not_this_dir/**/*",  # 彻底排除not_this_dir下的所有内容
]

关键注意事项

  • glob语法要精准:只写tests/not_this_dir只会排除目录本身,目录内的文件仍可能被包含,必须加上/**/*才能递归排除整个目录的所有内容。
  • 必须显式include tests目录:Poetry默认不会把tests目录纳入构建产物,所以如果不先声明include = ["tests/**/*"],exclude规则根本不会生效——因为目标目录本来就不在构建范围内。
  • 规则优先级逻辑:Poetry会先收集所有匹配include的文件,再从中剔除匹配exclude的内容,只要glob规则正确,exclude会覆盖include的匹配结果。

验证配置是否生效

配置完成后,执行以下命令确认构建产物符合预期:

poetry build
# 检查sdist包中是否包含not_this_dir,无输出则说明排除成功
tar -tf dist/your-package-name-0.1.0.tar.gz | grep not_this_dir

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:50:37