私は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
上記で説明したアプローチでは、相互依存関係のないライブラリに手動で介入する必要があることは理解していますが、ほとんどの場合 (確かに私の場合)、これは面倒な作業を行う必要があります。