958

ツイートには次のように書かれています。

顔を刺すのが好きでない限り、easy_install を使用しないでください。ピップを使用します。

easy_install ではなく pip を使用する理由 ほとんどの場合、PyPI とパッケージの作成者に問題があるのではありませんか? 作成者がくだらないソース tarball (例: ファイルが見つからない、setup.py がない) を PyPI にアップロードすると、pip と easy_install の両方が失敗します。外見上の違い以外に、Python の人々 (上記のツイートのように) がeasy_install よりも pipを強く好むように見えるのはなぜですか?

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

4

9 に答える 9

603

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

pip はもともと、次の方法で easy_install を改善するために作成されました。

  • すべてのパッケージは、インストール前にダウンロードされます。その結果、不完全なインストールは発生しません。
  • コンソールに有用な出力を表示するように注意が払われています。
  • アクションの理由が追跡されます。たとえば、パッケージがインストールされている場合、pip はそのパッケージが必要な理由を追跡します。
  • エラーメッセージは役に立つはずです。
  • コードは比較的簡潔でまとまりがあり、プログラムで簡単に使用できます。
  • パッケージは Egg アーカイブとしてインストールする必要はありません。(egg メタデータを保持しながら) フラットにインストールできます。
  • 他のバージョン管理システム (Git、Mercurial、および Bazaar) のネイティブ サポート
  • パッケージのアンインストール。
  • 要件の固定セットを簡単に定義し、一連のパッケージを確実に再現できます。
于 2010-07-10T19:32:59.450 に答える
249

まだ言及されていないが、 pipを好むもう 1 つの理由は、それが新しいホットネスであり、将来も引き続き使用されるためです。

以下のインフォグラフィック(The Hitchhiker's Guide to Packaging v1.0 のCurrent State of Packagingセクションから) は、setuptools/easy_install が将来廃止されることを示しています。

ここに画像の説明を入力

Setuptoolsと easy_install が新しい hotness (<a href="http://pythonhosted.org/distribute/" rel="nofollow noreferrer">distribute とpip ) に置き換えられることを示す、distribute のドキュメントからの別のインフォグラフィックを次に示します。pipはまだ新しい話題ですが、Distribute2013年に Setuptools v0.7のリリースでSetuptoolsと統合されました。

ここに画像の説明を入力

于 2011-01-26T15:19:54.820 に答える
171

次の 2 つの理由が考えられます。

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

  2. インストールが途中で失敗した場合、pip はクリーンな状態のままになります。

于 2010-07-10T18:56:46.120 に答える
115

要件ファイル。

真剣に、私はこれを 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

このように退屈な作業を自動化できるのはいつでも素晴らしいことです。

于 2010-07-11T13:28:57.433 に答える
82

pip はバイナリ パッケージをインストールせず、Windows で十分にテストされていません。

Windows には既定でコンパイラが付属していないため、多くの場合、Windows では pipを使用できません。easy_installは、Windows 用のバイナリ パッケージをインストールできます。

于 2010-07-11T18:05:17.063 に答える
76

更新:一部の人が考えていたように、逆ではなくsetuptools吸収さdistributeれました。setuptools最新のdistutils変更とホイール形式で最新です。したがって、現在、easy_installpipは多かれ少なかれ対等な立場にあります。

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

于 2014-02-22T20:22:52.243 に答える
25

fuzzymanの返信への追加として:

pip はバイナリ パッケージをインストールせず、Windows で十分にテストされていません。

Windows には既定でコンパイラが付属していないため、多くの場合、Windows では pip を使用できません。easy_install は、Windows 用のバイナリ パッケージをインストールできます。

Windows でのトリックは次のとおりです。

  • easy_install <package>バイナリのビルドを避けるためにバイナリパッケージをインストールするために使用できます

  • pip uninstall <package>easy_install を使用した場合でも使用できます 。

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

現在の pip ドクを参照してください: 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/en/latest/

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

乾杯 - クリス

簡単な更新:

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

のホイールを作ると約束しましPySideたが、昨年の夏にそれを行いました。よく働く!

distutilsヒント: これまでのところ、何人かの開発者は wheel 形式をサポートできませんでした。単にsetuptools. 多くの場合、この 1 つの単語を .xml に置き換えることで、このようなパッケージを簡単に変換できますsetup.py

于 2012-11-27T01:39:57.857 に答える