我正在尝试将基于 setuptools 的项目从遗留
setup.py
迁移到现代 pyproject.toml
配置。
与此同时,我想保留基于
pip-compile
的完善的工作流程,即 requirements.in
被编译为 requirements.txt
(当然是针对最终用户/非图书馆项目)。由于完全透明,这具有重要的好处:
出于这个原因,我不想通过
pyproject.toml
列表直接在 dependencies = []
内维护依赖项,而是在 pip-compiled
管理的 requirements.txt
. 外部
这让我想知道:有没有办法在
requirements.txt
配置中引用 pyproject.toml
文件,而不必回退到 setup.py
脚本?
使用动态元数据:
[project]
dynamic = ["dependencies"]
[tool.setuptools.dynamic]
dependencies = {file = ["requirements.txt"]}
pip-tools
可以从 pyproject.toml
中读取依赖项,就像从 requirements.in
中读取一样。
这与在 requirements.txt
中引用已编译的依赖项不同,但它更近了一步:您不需要 requirements.in
并且可以分发 requirements.txt
.
像@sinoroc,我认为仅使用固定版本“交付”需求可能会有风险。一个类似设置的项目与您的项目一起设置就足够了,您很可能会发生冲突。 当然,您可以排除它,或者甚至可能想利用您的项目没有使用其他任何东西。但这是一个非常具体的用例。