私は「Learn Python The Hard Way」(第2版)」という本を通してPythonを教えてきました。演習46では、読み進めるように言われました。 Pip、Distribute、およびその他のいくつかのパッケージ。
Pipのドキュメントは十分に明確でした。パッケージのインストール/アンインストール、アップグレードが可能です。配布用のドキュメントを読むと、基本的に同じことをしているようです。
簡単にダウンロード、ビルド、インストール、アップグレード、アンインストールPythonパッケージ
Pipとdistributeの違いは何ですか?また、それらは互いにどのように関連していますか?
[2014-10 TL; DR:distribute
は無効です。pip
、新しいsetuptools
、および、バイナリ分布の場合、wheels
。詳細は以下をご覧ください。]
[元の回答]
分配します です は古い setuptools のフォークだったので、以下のほとんどすべてのコメントはDistributeとsetuptoolsに等しく適用されます。 Setuptoolsは、さらに古いPython標準ライブラリパッケージ Distutils のいくつかの穴を埋める試みでした。 Setuptoolsは、コマンドラインインターフェイスを介したパッケージの自動ダウンロード、easy_install
、およびある程度の依存関係管理などの機能を追加しました。ただし、Pythonコミュニティの一部は、setuptoolsがあまりにも煩わしく、一部の機能には舞台裏の魔法が多すぎるという意見です。
pip
は、setuptoolsまたはDistributeの上にある高レベルのインターフェースです。それらを使用してその機能の多くを実行しますが、zip形式の卵などのより物議を醸す機能のいくつかを回避します。 pip
は、アンインストールコマンドや、要件の固定セットを定義し、パッケージのセットを確実に再現する機能など、setuptools
では利用できない機能も提供します。より完全な機能比較があります ここ 。
なぜこれほど多くのコンポーネントがあるのですか(そして buildout
のようにもっとあります)?多くの理由:ソリューションは、Pythonがサポートされているすべての主要なプラットフォーム(つまり、Unix-y、Windows、Mac OS X)で機能する必要があるため、ビルドとインストールにはcomplex一連の問題;多くのオープンソースプロジェクトと同様に、Pythonは本質的にすべてボランティアであり、多くの開発者はパッケージ化とインストールの問題にそれほど関心がありません。標準ライブラリに主要な新しい証明されていない機能を追加することについては、自然な保守主義があります。意見の違い等.
現在、Distutilsの代わりに、そしておそらくいくつかの高レベルのアドオンに代わるものを提供するプロジェクトが進行中です。 Python 3.3標準ライブラリで packaging
パッケージとして、またPythonの古いバージョンのアドオンとして Distutils2
としてリリースされる予定です。
要約すると、現在の関係は次のとおりです。
pip -> [ setuptools | Distribute ] -> Distutils -> Python core
|
3rd party packages | included in Python
|
UPDATE(2012-07):Python 3.3の機能コードのカットオフの前に、packaging
はまだリリースの準備ができていないと判断されました標準ライブラリにあるため、3.3リリースから削除されました。作業は、PyPIを介して利用できるDistutils2
と、Python 3.4の標準ライブラリに含まれるもので続行されます。
UPDATE(2014-10):この回答が最後に更新されてから、Pythonパッケージングの世界でさらに変更が加えられました。
最も重要なことは、2013年半ば以降、setuptools
とdistribute
の間の亀裂が解消され、開発活動 が新しいsetuptools
プロジェクトに統合されたことです 。 distribute
は非推奨になり、保守されなくなりました。代わりに新しいsetuptools
を使用しますが、そのeasy_install
をインストーラーとして使用しないでください。
pip
は、仮想環境の内外( virtualenv
または pyvenv
)のいずれかで、事実上の祝福されたインストーラーツール(プラットフォームのパッケージマネージャーによって提供されないPythonパッケージ用)になりました。
古いsetuptools
bdist eggs
の代わりに、 wheels
がPythonパッケージの祝福されたバイナリ配布形式になりました。
Python 3.4 、 pip
のバージョンwheel
がサポートされ、公式のpython.org
バイナリインストーラーとソースパッケージが同梱され、pip
も含まれる予定です。 Python 2.7の次のメンテナンスリリース (2.7.9)。
Distutils2
とpackaging
は休止状態になりました。
詳細については、Python 3ドキュメントの新しい Pythonモジュールの配布 セクションおよび新しい Pythonパッケージングユーザーガイド を参照してください。