pipの機能の優先順位付け¶
問題¶
pip開発チームは小規模であり、issue tracker を介して報告された問題に取り組むための時間とエネルギーが限られています。また、チームが対応する必要のある大量の課題(2020年11月時点で782件)があります。チームが最も影響を与える可能性のあることに基づいて作業の優先順位を付けるためには、ユーザーがpipに何を求めているのかをより良く理解する必要があります。
調査¶
この質問に答えるために、以下のシナリオで「機能を購入する」アンケートを作成しました。
「機能を購入する」ゲームに参加して、あなたにとって何が重要かを理解するのにご協力ください。pipを再設計するために、200ドルの予算が割り当てられています。
200ドルの予算で、最も維持したい機能を「購入」してください。
200ドル全額を費やす必要はありませんが、予算を超過しないでください!
ユーザーに、最初の100ドルを pip install
に関連する機能に費やし、残りの100ドルを他のpip機能に費やすように求めました。また、ユーザーは新しい機能を提案するために追加で10ドルを付与しました。
結果¶
1076件の回答があり、そのうち1070件が有効でした。最も人気のある機能には、pipの中核となる機能が含まれていました。
インストールされた依存関係のリストから環境を再作成する。
仮想制御システム、ファイル、またはローカルディレクトリからパッケージをインストール、アンインストール、およびアップグレードする。
破損した依存関係または競合する依存関係について警告する。
pip install¶
pip installに関連する上位10の機能は次のとおりです。
パッケージのインストールとアンインストール
パッケージを最新バージョンにアップグレードする
破損した依存関係について警告する
バージョン管理システム(例:Git、Mercurialなど)からパッケージをインストールする
ファイルで指定されたパッケージをインストールする
ローカルディレクトリからパッケージをインストールする
ハッシュに対してダウンロードしたパッケージを検証する
代替パッケージインデックス(またはインデックス)からパッケージをインストールする(デフォルトはPyPIのみ)
ホイールからパッケージをインストールする(コードをコンパイルする必要はありません)
インストールされたパッケージをコンピューター上のどこに配置するかを制御する
その他のpip機能¶
他のpip機能に関連する上位10の機能は次のとおりです。
環境を再作成するために使用できるインストール済みパッケージのリストを生成する
インストール済みのパッケージに依存関係の競合がないことを確認する
ユーザー入力を必要とせずにpipを実行する(例:CIで)
インストールされているすべてのパッケージに関する情報を表示する
インストールされている単一のパッケージに関する情報を表示する
pypi.orgでパッケージを検索する
pipに関する情報(バージョン情報、ヘルプ情報など)を表示する
パッケージをダウンロードし、ホイールをビルドして、オフラインで使用するためにディレクトリに保存する
pipのデフォルト構成を管理する(例:構成ファイルを使用)
pipの出力をカスタマイズする(例:詳細度を下げるまたは上げる、色を抑制する、出力をログに送信する)
結果は、ユーザーのPython経験の量によって異なりました。
ユーザーが経験レベルに基づいて機能を選択する可能性を確認する
ハッシュに対してダウンロードしたパッケージを検証する¶
破損した依存関係について警告する¶
パッケージを最新バージョンにアップグレードする¶
代替パッケージインデックス(またはインデックス)からパッケージをインストールする¶
ファイルで指定されたパッケージをインストールする¶
パッケージのインストールとアンインストール¶
バージョン管理システムからパッケージをインストールする¶
ホイールからパッケージをインストールする¶
ローカルディレクトリからパッケージをインストールする¶
インストールされたパッケージをコンピューター上のどこに配置するかを制御する¶
推奨事項¶
環境の再作成¶
環境の再作成は、requirements.txt
機能の一部としてpipにすでに含まれています。ただし、その人気と需要から、pipはこの機能のサポートを改善する必要があると推奨します。
pip CLIで直接、環境の再作成ユーザー出力とヘルプガイドを改善する。
pipドキュメントとユーザーガイドを改善して、pipの中核機能として環境の再作成を際立たせる。
仮想環境をpipに「組み込まれた」コア機能と見なすことにより、環境の再作成プロセス自体を改善する。
インストールされた依存関係のリストから環境を再作成することは、全体として最も評価の高い機能要求であり、各ユーザーグループでも同様でした。ただし、経験が6か月未満のユーザーと16〜19年の経験を持つユーザー(2番目に評価が高かった)は除きます。
フリーテキストで機能要求を入力するように求められた場合、ユーザーは「組み込み」、「仮想」、「自動」、「分離」という単語を「環境」という単語と組み合わせて使用しました。これは、ユーザーがpipに高度なインテリジェンスと使いやすさで環境を再作成することを期待していることを示唆しています。
選択された直接引用
virtualenvにいない場合にpipに警告させる
コマンドライン引数を使用した自動仮想環境作成
仮想環境を排除します。他の人がそうしているように、./python_modules/を使用してください
pipがminiconaと同様にpythonバージョンと仮想環境を管理するのを見たいです
これに200ドルすべてを使います。アプリケーションをインストールするときに、その依存関係をシステムパッケージストアにインストールしないように、pipenvまたはvenvをpipに統合します。また、アプリケーションパッケージの依存関係バージョンを固定できるようにします(pip-compileが行うように)
依存関係の管理¶
pipチームは、依存関係(競合など)に関連する警告およびエラーメッセージを、解決のための実用的なヒントとともに改善することを推奨します。これは、以下を含む複数のタイムスケールで展開できます。
エラーメッセージと並行して、この問題を解決する方法に関するヒントをユーザーに提供する。
ドキュメントにおいて、仮想環境の作成を明確に含めること。
pip install
の衝突エラーが発生した場合、そして可能であれば pip の組み込み機能として。依存関係解決機能のアップグレード(進行中)。
衝突するパッケージやアップグレードに関する警告を含め、依存関係の管理が pip ユーザーにとって重要であることは明らかです。仮想環境を通じてユーザーが依存関係をより適切に管理できるようにすることで、pip はユーザーが遭遇する全体的な警告や衝突メッセージを減らすことができます。