使用pyproject.toml时是否仍需requirements.txt?固定依赖该存于何处?
pyproject.toml时代,固定依赖该放哪?
核心结论:规则没本质变化,分场景处理就行
1. 库项目(给其他开发者用的包)
- 依然在
pyproject.toml的[project]区块下的dependencies字段里写带版本范围的依赖约束,比如requests>=2.25.0,<3。这么做是为了让你的库能和其他依赖同一包的项目兼容,避免版本冲突。 - 固定版本的依赖不需要写进
pyproject.toml,你可以自己维护requirements-dev.txt来存开发、测试用的固定版本(比如CI环境、本地调试),但这只供内部使用,不用对外发布。
2. 部署/应用项目(自己运行的服务、脚本等)
- 继续用
requirements.txt存完全固定的依赖版本(比如requests==2.31.0)就行,pip install -r requirements.txt的用法完全兼容,生态支持也最成熟。 - 如果你想统一用
pyproject.toml,可以自己加自定义字段(比如[tool.pinned-requirements])来放固定依赖,但官方没有专门的标准章节,这种方式需要自己写脚本或者用第三方工具(比如pip-tools)解析安装。相比之下,requirements.txt还是更省心的选择。
官方文档相关说明
Python打包官方文档里,针对应用部署的固定依赖,依然推荐用锁定文件的方式:除了手动维护的requirements.txt,也可以用pip-compile生成的锁定版requirements.txt,或者poetry、pipenv这类工具生成的poetry.lock、Pipfile.lock。但如果是纯setuptools+pyproject.toml的轻量场景,requirements.txt依然是官方认可的固定依赖存放方案。
内容的提问来源于stack exchange,提问作者Bastian Venthur
相关产品推荐
相关产品推荐

