私の目標は単純です。完全にダウンロードする必要なく、PyPi パッケージの依存関係をリモートで取得したいのです。
パッケージがダウンロードされると、依存関係を解決するときにpipが卵を読み取っているように見えることを理解しているようです(pipコードを読んでいます...
他の方法はありますか?
私の目標は単純です。完全にダウンロードする必要なく、PyPi パッケージの依存関係をリモートで取得したいのです。
パッケージがダウンロードされると、依存関係を解決するときにpipが卵を読み取っているように見えることを理解しているようです(pipコードを読んでいます...
他の方法はありますか?
jinghli が指摘しているように、現在、任意の PyPi パッケージの依存関係を完全にダウンロードすることなくリモートで取得する信頼できる方法はありません。実際、依存関係は環境に依存する場合があるため、一般的なケースでは、Brian の setup.py コードを実行するようなアプローチが必要です。
Python エコシステムが依存関係を処理する方法は、問題が十分に理解される前の 1990 年代に進化し始めました。PEP 508 -- Python ソフトウェア パッケージの依存関係の仕様により、状況を改善する方向性が示され、PEP 426 の「野心的な」ドラフト アプローチ-- Python ソフトウェア パッケージ 2.0 のメタデータは、再実装と合わせて、将来さらに改善される可能性があります。 PyPI のWarehouseとして。
現在の状況は、ドキュメントPython Dependency Resolutionで詳しく説明されています。
PyPI は、各パッケージのメタデータをダウンロードするためのjson インターフェイスを提供します。このinfo.requires_dist
オブジェクトには、必要なパッケージの名前とオプションのバージョン制限などのリストが含まれています。欠落していることがよくありますが、開始点の 1 つです。
たとえば、Django (json)は次のことを示します。
{
"info": {
...
"requires_dist": [
"bcrypt; extra == 'bcrypt'",
"argon2-cffi (>=16.1.0); extra == 'argon2'",
"pytz"
],
...
}
残念ながら、pip にはこの機能がありません。PyPI のパッケージで使用できるメタデータには、依存関係に関する情報は含まれていません。
通常、プロジェクトの Web サイトの README ファイルから詳細な依存関係を見つけることができます。
pip search
パッケージに関する情報を提供できます。それは何に基づいているかを教えてくれます。
$ pip search flask
Flask - A microframework based on Werkzeug, Jinja2 and good intentions