Python Poetry 项目构建中文件包含行为的变更解析
在Python项目构建工具Poetry从1.x升级到2.x版本的过程中,一个重要但容易被忽视的变化是关于tool.poetry.include
配置项的行为变更。这个变更影响了项目打包时额外文件的包含逻辑,导致许多开发者在升级后遇到构建产物中缺少预期文件的问题。
问题背景
在Poetry 1.8.5版本中,当开发者使用tool.poetry.include
配置项指定要包含的额外文件时,这些文件会被无条件地包含在构建产物中(无论是wheel包还是tar.gz包)。然而,在Poetry 2.1.1版本中,这一行为变得更加严格和一致。
行为变更细节
新版本Poetry对文件包含逻辑做了以下重要调整:
-
wheel包构建:现在只包含明确列在
tool.poetry.include
中的文件,不再自动包含项目目录下的其他文件 -
tar.gz包构建:保持与之前版本相同的行为,包含所有指定文件
-
路径规范:要求
include
配置中的路径必须明确且完整,不能依赖隐式的文件包含
实际影响案例
以一个实际项目为例,项目结构包含:
gnwmanager/
firmware.bin
unlock.bin
cli/gnw_patch/binaries/
(一些二进制文件)
在Poetry 1.8.5下:
- 所有.bin文件都被正确包含在wheel和tar.gz包中
在Poetry 2.1.1下:
- wheel包中缺少顶层目录的.bin文件
- cli子目录下的二进制文件仍被包含
- tar.gz包中所有文件都被正确包含
解决方案
要使项目在新版Poetry下正常工作,需要在pyproject.toml中明确指定所有需要包含的文件。例如:
[tool.poetry]
include = [
"gnwmanager/firmware.bin",
"gnwmanager/unlock.bin",
"gnwmanager/cli/gnw_patch/binaries/*.bin"
]
最佳实践建议
-
显式声明:始终明确列出所有需要包含的非Python文件
-
版本兼容:在项目文档中注明最低Poetry版本要求
-
测试验证:在CI流程中增加构建产物内容检查
-
模式匹配:合理使用通配符简化配置,但要确保不会遗漏重要文件
技术原理
这一变更背后的设计理念是使构建行为更加确定和可预测。旧版本中隐式的文件包含可能导致:
- 构建结果不可预测
- 可能意外包含不需要的文件
- 不同环境下构建结果不一致
新版Poetry通过严格要求显式声明,确保了构建过程的可重复性和一致性,这符合现代Python打包的最佳实践。
总结
Poetry 2.0+版本对文件包含行为的变更是向更加严格和明确的构建配置迈出的重要一步。虽然这可能导致现有项目需要调整配置,但从长远来看,这种变化提高了构建过程的可靠性和可维护性。开发者应该适应这一变化,采用显式声明的方式来管理项目中的资源文件。
- QQwen3-Next-80B-A3B-InstructQwen3-Next-80B-A3B-Instruct 是一款支持超长上下文(最高 256K tokens)、具备高效推理与卓越性能的指令微调大模型00
- QQwen3-Next-80B-A3B-ThinkingQwen3-Next-80B-A3B-Thinking 在复杂推理和强化学习任务中超越 30B–32B 同类模型,并在多项基准测试中优于 Gemini-2.5-Flash-Thinking00
GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~0106DuiLib_Ultimate
DuiLib_Ultimate是duilib库的增强拓展版,库修复了大量用户在开发使用中反馈的Bug,新增了更加贴近产品开发需求的功能,并持续维护更新。C++03GitCode百大开源项目
GitCode百大计划旨在表彰GitCode平台上积极推动项目社区化,拥有广泛影响力的G-Star项目,入选项目不仅代表了GitCode开源生态的蓬勃发展,也反映了当下开源行业的发展趋势。08- HHunyuan-MT-7B腾讯混元翻译模型主要支持33种语言间的互译,包括中国五种少数民族语言。00
GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00- HHowToCook程序员在家做饭方法指南。Programmer's guide about how to cook at home (Chinese only).Dockerfile03
- PpathwayPathway is an open framework for high-throughput and low-latency real-time data processing.Python00
- Dd2l-zh《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被70多个国家的500多所大学用于教学。Python011
热门内容推荐
最新内容推荐
项目优选









