发布到PyPI的分布式包是否需在GitHub仓库添加requirements.txt?
关于PyPI包仓库是否需要添加requirements.txt的问题
你的核心思路是对的——不需要强制在GitHub仓库中添加requirements.txt或lock文件,包的正式依赖声明完全可以只放在pyproject.toml里,让贡献者自行管理各自的开发环境是合理的选择。不过具体可以分情况灵活处理:
核心依赖必须放在
pyproject.toml中
PyPI包的依赖关系是通过pyproject.toml(或者旧版的setup.py/setup.cfg)来定义的,这是包发布后用户安装时的唯一依据。requirements.txt这类文件不会影响PyPI上的包依赖逻辑,所以正式的生产依赖必须写在pyproject.toml的[project.dependencies]区块里。可选添加辅助文件提升贡献体验
虽然不是必须,但你可以根据团队需求添加辅助文件:- 比如创建
requirements-dev.txt,把开发过程中需要的工具(如pytest、black、flake8等)列进去,方便贡献者一键安装开发环境; - 或者用pip-compile、poetry等工具生成lock文件,固定开发环境的依赖版本,避免不同贡献者因为版本差异出现兼容性问题。
这些文件只是给开发者提供便利,不会影响包本身的发布逻辑。
- 比如创建
区分生产依赖和开发依赖
记得在pyproject.toml里明确区分生产依赖和开发依赖:生产依赖放在[project.dependencies],开发依赖可以放在[project.optional-dependencies]的dev分组里,或者对应工具的专属区块(比如poetry的[tool.poetry.dev-dependencies]),这样用户安装你的包时不会自动安装开发相关的冗余依赖。
内容的提问来源于stack exchange,提问作者jojosilva
相关产品推荐
相关产品推荐

