我正在开发一个 python 库,我们目前正在使用pip-tools
它来固定依赖项。
例如一个基本的requirements.in
:
black
pandas
torch
在此文件上运行pip-compile
将生成requirements.txt
类似以下内容(此处已简化):
black==20.8b1 # via -r requirements.in
click==7.1.2 # via black
numpy==1.19.4 # via pandas, torch
pandas==1.1.5 # via -r requirements.in
pathspec==0.8.1 # via black
pytz==2020.4 # via pandas
regex==2020.11.13 # via black
torch==1.7.1 # via -r requirements.in
我的问题是不建议为将在 pypi 上公开的包固定版本,因为最终用户对其他库缺乏灵活性。在这些情况下指定依赖范围似乎是一种常见的做法,例如
numpy >=1.18.0, <1.19.0
pandas >=1.0.0
etc.
我的问题是,是否有任何方法可以自动生成这些依赖范围requirements.in
?我想这应该相对容易使用现有的依赖解析工具来生成与所有库兼容的最小和最大版本。(任何没有指定任何版本的库都可以保持原样。)
我还没有找到任何可以执行此类操作的工具。其他库的维护人员是否手动执行此任务?我理解我上面描述的方法仍然需要对requirements.in
没有交叉依赖关系的库进行一些手动干预,但在大多数情况下(当然在我的情况下),这应该是繁重的工作。