web-dev-qa-db-ja.com

なぜeasy_installの上にpipを使うのですか?

A ツイート 読み:

あなたが顔に刺さるのが好きでない限り、easy_installを使わないでください。ピップを使用してください。

なぜeasy_installの上にpipを使うのですか? の障害はPyPIとパッケージの作者のほとんどにありますか? ?作者ががらくたソースのtarball(例:見つからないファイル、no setup.py)をPyPIにアップロードした場合、pipとeasy_installの両方は失敗します。見かけ上の違い以外に、なぜPythonの人たち(上のツイートのように)が 強く のように思われるのですか?

(コミュニティによって管理されているDistributeパッケージのeasy_installについて話しているとしましょう)

915

ここでの回答の多くは2015年の期限が切れています(ただし、 Daniel Rosemanから最初に承認されたもの はそうではありません)。これが現在の状況です。

  • バイナリーパッケージは、PyPIだけではなく、 Christoph GohlkeのWindows用拡張パッケージ のようなサードパーティ製のリポジトリで配布されるようになりました(.whlファイル)。 pipは車輪を扱うことができます。 easy_installはできません。
  • 仮想環境(3.4に組み込まれている、または virtualenv を使用して2.6 +/3.1 +に追加できる)は非常に重要で目立つツールになりました(そして 公式ドキュメント で推奨されています) _); pipはそのまま使用できますが、easy_installでは正しく機能しません。
  • easy_installを含んだdistributeパッケージは管理されなくなりました。 setuptoolsに対する改善はsetuptoolsにマージされました。 distributeをインストールしようとすると、代わりにsetuptoolsがインストールされます。
  • easy_install自体は、準メンテナンスされているだけです。
  • pipeasy_install(展開されたソースツリーからのインストール、DVCSリポジトリからのインストールなど)より劣っていたというすべてのケースは古くなっています。 pip install .pip install git+https://ができます。
  • pipには、python.orgの公式Python 2.7および3.4​​+パッケージが付属しています。ソースからビルドする場合は、デフォルトでpipブートストラップが含まれています。
  • パッケージのインストール、使用、および構築に関するドキュメントのさまざまな不完全な部分は、 Python Packaging User Guide に置き換えられました。 Pythonモジュールのインストール に関するPython自身のドキュメントは、このユーザガイドに従うようになり、明示的にpipを「優先インストーラプログラム」として呼び出しています。
  • 他の新機能が何年にもわたってpipに追加されましたが、それらはeasy_installには含まれません。たとえば、pipを使用すると、要件ファイルを作成してから各サイドで1つのコマンドでインストールすることで、サイトパッケージのクローンを簡単に作成できます。あるいは、自社開発に使用するために要件ファイルをローカルリポジトリに変換することもできます。等々。

2015年にeasy_installを使用することを私が知っている唯一の正当な理由は、OS X 10.5-10.8でAppleのプレインストールされたPythonバージョンを使用するという特別な場合です。 10.5以降、Appleはeasy_installを含めましたが、10.10の時点ではまだpipを含みません。 10.9以降では、get-pip.pyを使用する必要がありますが、10.5〜10.8では、これにはいくつか問題があるため、Sudo easy_install pipの方が簡単です。 (一般的に、easy_install pipはお勧めできません。これを実行するのは、OS X 10.5-10.8だけです。)また、easy_installを含む方法でreadlineを含める方法は含まれていますが、pipは含まれません。アップグレードしたい場合はSudo easy_install readlineも必要です。

291
abarnert

Ian Bicking自身の からpipへの紹介

pipは、もともと次のようにeasy_installを改良するために書かれました。

  • すべてのパッケージはインストール前にダウンロードされます。部分的に完了したインストールは結果として発生しません。
  • コンソールに有用な出力を表示するように注意が払われます。
  • 行動の理由は追跡されます。たとえば、パッケージがインストールされている場合、pipはそのパッケージがなぜ必要だったのかを追跡します。
  • エラーメッセージは役に立ちます。
  • コードは比較的簡潔でまとまりがあり、プログラム的に使いやすくなっています。
  • パッケージはEggアーカイブとしてインストールする必要はありません。フラットにインストールすることができます(Eggメタデータを維持しながら)。
  • 他のバージョン管理システム(Git、Mercurial、Bazaar)のネイティブサポート
  • パッケージのアンインストール.
  • 一連の固定要件を定義し、一連のパッケージを確実に再現するのは簡単です。
590
Daniel Roseman

まだ述べられていないが pip を支持するもう1つの理由は、それが新しい暑さであり、今後も使用されることになるからです。

The Hitchhiker's Guide to Packaging v1.0 _の 現在のパッケージ状態 セクションからの下のインフォグラフィックは、setuptools/easy_installが将来なくなることを示しています。

enter image description here

これは 配布物のドキュメント からの別のインフォグラフィックで、 Setuptools とeasy_installが新しいホットさに置き換えられることを示しています - distributepippip はまだ新しい人気ですが、2013年に DistributeSetuptools とマージされ、 Setuptools v0.7がリリースされました。

enter image description here

245
Matthew Rankin

2つの理由があります。

  1. pipはuninstallコマンドを提供します

  2. インストールが途中で失敗した場合、pipはあなたをきれいな状態にします。

168
Ned Batchelder

要求ファイル。

真剣に、私は毎日virtualenvと組み合わせてこれを使用しています。


クイック依存性管理チュートリアル、フォーク

要件ファイルを使用すると、pipによってインストールされたすべてのパッケージのスナップショットを作成できます。これらのパッケージを仮想環境にカプセル化することで、ご使用のコードベースで特定のパッケージセットを処理し、そのコードベースを他のユーザーと共有することができます。

Herokuのドキュメントから https://devcenter.heroku.com/articles/python

仮想環境を作成し、それを使用するようにシェルを設定します。 (bash/* nix命令)

virtualenv env
source env/bin/activate

このシェルで実行されるすべてのpythonスクリプトはこの環境のパッケージと設定を使用します。これで、あなたのマシンにグローバルにインストールする必要なしに、パッケージをこの環境にローカルにインストールすることができます。

pip install flask

これで、どのパッケージが一緒にインストールされているかについての情報をダンプできます。

pip freeze > requirements.txt

そのファイルをバージョン管理にチェックインした場合、他の誰かがあなたのコードを手に入れたとき、彼らは彼ら自身の仮想環境をセットアップして以下のものですべての依存関係をインストールできます。

pip install -r requirements.txt

いつでもあなたはこのような退屈さを自動化することができます素晴らしいです。

114

pipはバイナリパッケージをインストールすることはなく、Windows上では十分にテストされていません。

Windowsにはデフォルトでpipというコンパイラが付属していないので、 できない はそこでは使用できません。 easy_install can Windows用のバイナリパッケージをインストールします。

80
fuzzyman

更新:setuptoolsは、他の方法とは反対に、distributeを吸収しました。 setuptoolsは最新のdistutilsの変更とホイールのフォーマットに合わせて最新のものになっています。そのため、easy_installpipは、ほぼ同等の立場にあります。

ソース: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name

72
user3341691

Fuzzymanの返事に加えて:

pipはバイナリパッケージをインストールすることはなく、Windows上では十分にテストされていません。

Windowsにはデフォルトでコンパイラが付属していないため、pipを使用できないことがよくあります。 easy_installはWindows用のバイナリパッケージをインストールすることができます。

これがWindowsのトリックです。

  • あなたはバイナリパッケージをインストールするのにeasy_install <package>を使うことができます。

  • easy_installを使っていてもpip uninstall <package>を使うことができます。

これは私にとってWindows上で動作する単なる回避策です。バイナリが含まれていない場合は、実際には常にpipを使用します。

現在のpip dokuを参照してください。 http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

私はメーリングリストでそのために何を計画しているのか尋ねます。

これが最新のアップデートです。

バイナリをインストールするための新しくサポートされた方法はwheelです。まだ標準にはなっていませんが、ほとんどです。現在のバージョンはまだアルファです:1.0.0a1

https://pypi.python.org/pypi/wheel

http://wheel.readthedocs.org/ja/latest/

卵の代わりにwheelを使用してPySide用のOS Xインストーラを作成してwheelをテストします。戻ってきて、これについて報告します。

歓声 - クリス

クイックアップデート:

wheelへの移行はほぼ終わりました。ほとんどのパッケージはwheelをサポートしています。

私はPySideのために車輪を作ることを約束しました、そして私は去年の夏にそれをしました。よく働く!

ヒント:これまでのところ、distutilssetuptoolsに置き換えるのを忘れているという理由で、少数の開発者はwheelフォーマットをサポートできませんでした。多くの場合、setup.py内のこの単一のWordを置き換えることで、このようなパッケージを簡単に変換できます。

23

pipの代わりにeasy_installを使用しなければならない、または直接ソースコードを取得しなければならないという特別な場合を1つだけ満たしてください。

パッケージGitPythonについては、pipのバージョンが古すぎる(0.1.7)のに対し、easy_installからのバージョンは最新の0.3.2.rc1です。

私はPython 2.7.8を使っています。 easy_installpipのアンダーレイメカニズムについてはよくわかりませんが、少なくともいくつかのパッケージのバージョンは互いに異なる可能性があり、時にはeasy_installが新しいバージョンのものとなる場合があります。

easy_install GitPython
3
Landys