22

私の目標は単純です。完全にダウンロードする必要なく、PyPi パッケージの依存関係をリモートで取得したいのです。

パッケージがダウンロードされると、依存関係を解決するときにpipが卵を読み取っているように見えることを理解しているようです(pipコードを読んでいます...

他の方法はありますか?

4

4 に答える 4

8

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" ], ... }

于 2017-04-11T15:53:34.857 に答える
3

残念ながら、pip にはこの機能がありません。PyPI のパッケージで使用できるメタデータには、依存関係に関する情報は含まれていません。

通常、プロジェクトの Web サイトの README ファイルから詳細な依存関係を見つけることができます。

pip searchパッケージに関する情報を提供できます。それは何に基づいているかを教えてくれます。

$ pip search flask
Flask     - A microframework based on Werkzeug, Jinja2 and good intentions
于 2013-01-04T11:22:31.633 に答える