如何在setuptools项目的pyproject.toml中引用requirements.txt?

问题描述 投票:0回答:2

我正在尝试将基于 setuptools 的项目从遗留

setup.py
迁移到现代
pyproject.toml
配置。

与此同时,我想保留基于

pip-compile
的完善的工作流程,即
requirements.in
被编译为
requirements.txt
(当然是针对最终用户/非图书馆项目)。由于完全透明,这具有重要的好处:

  • 100% 可重现的安装,因为固定了依赖项的完全传递闭包。
  • 更好地理解依赖传递闭包中的依赖冲突。

出于这个原因,我不想通过

pyproject.toml
列表直接在
dependencies = []
内维护依赖项,而是在
pip-compiled
管理的
requirements.txt
.

外部

这让我想知道:有没有办法在

requirements.txt
配置中引用
pyproject.toml
文件,而不必回退到
setup.py
脚本?

python pip setuptools pyproject.toml
2个回答
29
投票

使用动态元数据

[project]
dynamic = ["dependencies"]
[tool.setuptools.dynamic]
dependencies = {file = ["requirements.txt"]}

0
投票

pip-tools
可以从
pyproject.toml
中读取依赖项,就像从
requirements.in
中读取一样。 这与在
requirements.txt
中引用已编译的依赖项不同,但它更近了一步:您不需要
requirements.in
并且可以分发
requirements.txt
.

像@sinoroc,我认为仅使用固定版本“交付”需求可能会有风险。一个类似设置的项目与您的项目一起设置就足够了,您很可能会发生冲突。 当然,您可以排除它,或者甚至可能想利用您的项目没有使用其他任何东西。但这是一个非常具体的用例。

© www.soinside.com 2019 - 2024. All rights reserved.