質問: Pythonパッケージを処理するためのPip vs Package Manager Pythonパッケージは多くのディストリビューションのリポジトリで頻繁にホストされています。 このチュートリアルを読んだ後に、「本当にこれを行いますか? 「私はpipの使用を避け、システムリポジトリを使用することを推奨しました。リポジトリにないパッケージをインストールする必要がある場合にのみpipを使用するようにしました。 しかし、これは矛盾したインストール方法であるため、pipのみを使用する方が良いでしょうか?両方の場所で利用可能なパッケージのためにシステム自身のリポジトリ上でpipを使用することの利点/デトラクターは何ですか? 私が含めたリンク > > > 標準のDebian/NeuroDebianパッケージを常に使うことの利点は、それらのパッケージが互いに互換性があるように慎重にテストされていることです。 > Debianパッケージは他のライブラリとの依存関係を記録しているので、インストールの一部として必要なライブラリをいつでも手に入れることができます。 > > > 私はアーチを使います。これはapt以外の他のパッケージ管理システムにも当てはまりますか?
回答: TL、DR ===== * `pip` (+ virtualenv)を使って(lib、フレームワーク、開発ツールなど)**あなたのプロジェクト**(あなたが開発したもの)を使う * **あなた**が使用するアプリケーション(エンドユーザーとして)にパッケージマネージャを使用する 開発依存関係 ====== Pythonでソフトウェアを開発しているのであれば、ランタイムの依存関係、ビルド時の依存関係、自動テストや自動コンプライアンスチェックに必要なものなど、プロジェクトのすべての依存関係に `pip` を使用するとよいでしょうリンター、スタイルチェッカー、静的型チェッカー...) これにはいくつかの理由があります。 * これで **virtualenv** (直接またはvirtualenvwrapper、pipenv、その他の方法で)を使用して異なるプロジェクトの依存関係を相互に分離したり、 "運用中"で使用したpythonアプリケーションを分離したりできます(開発中に発生する可能性のある、すべてのエキゾチックな狂信者(あるいは単なる非互換性)からのユーザーとして) * これにより、プロジェクトのすべての依存関係を `Requirements.txt` (プロジェクトがアプリケーションの場合)または `setup.py` (プロジェクトがアプリケーションの場合)で追跡できます。ライブラリまたはフレームワーク)ファイル。これはソースコードと一緒にリビジョン管理(例:Git)にチェックインできるので、あなたは常にあなたのコードのどのバージョンがあなたの依存関係のどのバージョンに依存しているかを知ることができます。 * 他の開発者が同じLinuxディストリビューションや同じオペレーティングシステムを使用していなくても(使用されている依存関係がMacやWindowsで使用可能な場合、あるいは使用されているものは何でも)それは) * オペレーティングシステムのパッケージマネージャを自動的に更新してもコードが破損することは望ましくありません。あなたはあなたの依存関係を更新するべきですが、あなたはあなたのコードを修正するか更新をロールバックする準備ができるようにあなたはそれを意識的にそして時々選択するべきです。 (リビジョン管理システムで完全な依存関係の宣言をコードと一緒に追跡すれば、これは簡単です。) 直接的な依存関係と間接的な依存関係を分ける必要があると思う場合(または依存関係の許容バージョン範囲と実際に使用されるバージョンを区別する、 "version pinning"を参照)は、pip-toolsやpipenvを調べます。これにより、ビルド依存関係とテスト依存関係を区別することもできます。 (ビルド依存関係とランタイム依存関係の違いは、おそらく `setup.py` でエンコードできます) 使用するアプリケーション ============ あなたが普通のアプリケーションとして使っているものや、Pythonで書かれているだけのものであれば、あなたのオペレーティングシステムのパッケージマネージャを好むでしょう。パッケージマネージャによってインストールされた他のものと合理的に最新かつ互換性があることを確認します。ほとんどのLinuxディストリビューションはまた、マルウェアを配布していないと主張するでしょう。 必要なものがディストリビューションのデフォルトのパッケージレポジトリで利用できない場合は、追加のパッケージレポジトリ(debベースのディストリビューションのランチパッドなど)をチェックアウトするか、とにかく `pip` を使用してください。後者の場合は、システム全体ではなく `--user` を使用してユーザーの自宅にインストールします。そのため、Pythonのインストールが中断される可能性が低くなります。 (あなたが一時的に必要とすることはめったにないもののために、あなたはvirtualenvを使うことさえできます。)