easy_installでpipを使用する理由 [閉まっている]


936

つぶやきを読み取ります。

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

easy_installでpipを使用する理由 しないほとんどは、PyPIパッケージの作者と障害嘘は?作者ががらくたソースtarball(例:欠落ファイル、setup.pyなし)をPyPIにアップロードすると、pipとeasy_installの両方が失敗します。表面的な違い以外に、なぜPythonの人々(上記のツイートのように)がeasy_installよりもpip を強く支持しているように見えるのですか?

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


74
この質問を見る前に、「easy_installは使用せず、pipを使用する」と言って無関係な質問に答えました。今私はなぜ私がそれを言ったのかと思っています...
ダニエル・ローズマン

21
私はまだpipが失敗する原因となるパッケージに遭遇しますが、easy_installは問題なく処理するため、これについても興味があります。
kwatford、2010

5
pyobjc-coreは、easy_installでは機能しますが、pipでは機能しないパッケージの例です。
Marc Abramowitz、2011

5
4年後にPythonに戻ると、パッケージングの状態はめちゃくちゃです。それは2014年であり、悪化しただけです。私が理解しているところによると、公式のpythonのドキュメントはこれに気づいていませんが、setuptools distutilsを吸収しましたが、どちらもpython 3の一部でなく、pipは3番目のホイールのようにぶら下がっています(しゃれが意図されています)。
Andriy Drozdyuk 2014年

3
@drozzy:コア開発者のグループが事態が非常に混乱し、問題の解決に関与しなければならないと決定した直後に、最悪の時間に戻ってきました。setuptoolsはPython 3の一部ではありません。その理由pipは、それがエンドユーザーが必要とする唯一の部分だからです。(そして、PyPIで配布したい開発者は、明らかにpip install setuptools、そして他のすべてが望むかもしれません。)
abarnert

回答:


304

ここでの回答の多くは2015年には古くなっています(ただし、最初に受け入れられたDaniel Rosemanからの回答はそうではありません)。現状は次のとおりです。

  • バイナリパッケージは.whl、PyPIだけでなく、Christoph GohlkeのExtension Packages for Windowsなどのサードパーティのリポジトリで、ホイール(ファイル)として配布されるようになりましたpip車輪を扱うことができます。easy_installできません。
  • 仮想環境(3.4に組み込まれている、または2.6 + / 3.1 +にで追加できるvirtualenv)は、非常に重要で目立つツールになっています(公式ドキュメントで推奨されています)。そのまま使用pipできますが、では正しく機能しませんeasy_install
  • distribute付属パッケージはeasy_installもはや維持されます。その改良点はsetuptoolsにマージされましたsetuptools。インストールしようとするdistributeと、setuptools代わりにインストールされます。
  • easy_install それ自体は準整備されているだけです。
  • 以前は、パックされていないソースツリーからのインストール、DVCSリポジトリなどからのインストールよりpipも劣っていたケースはすべてeasy_installなくなりました。できます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つのコマンドを使用してインストールすることで、サイトパッケージのクローンを簡単に作成できます。または、社内開発に使用するために要件ファイルをローカルリポジトリに変換します。等々。

easy_install2015年に使用することがわかっている唯一の正当な理由は、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のみです。)また、10.5〜10.8はreadlineeasy_install周りをくるくる回す方法を知っているが、知らない方法でインクルードpipしているので、sudo easy_install readlineあなたがそれをアップグレードしたいなら。


9
@drozzy:多分。しかし、今後5年間で、ダニエルローズマンの答えは時代を超越しているものの、私の答えは他のすべての問題と同じくらい古くなると考えてください。また、私の答えは、Pythonコミュニティがその間に遅れをとった理由を示す5年前に受け入れられた回答を指摘することに頼ることができなければ、それほど良くありませんpip
abarnert 2015年

2
パッケージ化されたバージョンのpipにはバグがあり、pip自体のアップグレードに失敗したことは注目に値します。皮肉なことを考えるかどうかにかかわらず、そのような場合の最も簡単な解決策は、easy_install -U pipまたはを行うことですeasy_install3 -U pip
analytik 2016

「しかし、適切に動作しeasy_installない」これは私の経験ではありませんでしたが、今ではホイールが支配するようになったので、しばらくは試していません。しかし、Christoph Gohlkeのバイナリは、実行可能な卵として配布されていました。easy_installそれらを呼び出すことが、これらのパッケージを仮想環境にインストールできる唯一の方法であり、胸が痛むことはありませんでした。どのようにしeasy_installて仮想環境で動作しなくなりますか?
jpmc26 2018年

599

イアン・ビッキング自身のpip紹介から

pipはもともとeasy_installを次のように改善するために作成されました

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

63
「エラーメッセージ」の利点は、特に新しいユーザーにとっては非常に大きなものです。イージーインストールは、致命的なエラーのように見える何十ものものを吐き出すことで有名ですが、とにかく正常にインストールを実行するために巻き込まれており、それがほとんどすべてのことを無視することを学ぶまで使用することは困難です。Pipは、そもそもそういったことを省略しているだけです。
Brandon Rhodes

1
@Glyph使用して利点があるeasy_install pip以上はsudo apt-get install python-pip
デニス

2
パッケージベースのディストリビューションでは、virtualenvの外部でeasy_installを使用しないでください:workaround.org/easy-install-debian
Federico

11
@Dennis:使用してsudo apt-getのUbuntu / DebianのことでPythonパッケージをインストールします/usr/lib/python/dist-packagesに対し、sudo pipまたはsudo easy_installにインストールされます/local/lib/python/site-packagesと、残念ながらのDebian / Ubuntuのパッケージは、多くの場合、ピップが精通していないことを別の名前を持っています。IMHOの最良のソリューションは、virtualenvを使用しpipてパッケージをそこにインストールすることです。
Mark Mikofski、2012

2
これには更新が必要です。
Andriy Drozdyuk 2014年

248

ピップを支持するもう1つの理由は、まだ言及されていませんが、それが新しいホットネスであり、今後も使用され続けるためです。

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

ここに画像の説明を入力してください

Setuptoolsとeasy_installが新しいホットネス、distributepipに置き換えられることを示す、distributeのドキュメントからの別のインフォグラフィックを次に示します。一方でピップはまだ新しい辛され、配布と合併setuptoolsののリリースで2013年にsetuptoolsの v0.7。

ここに画像の説明を入力してください


47
インフォグラフィックFTW
WineSoaked '19 / 03/11

34
2番目のグラフィックであるOTOHは、1年古くなっています。配布はサポートが終了し、distutils2(3.3以降のPython標準ライブラリにも含まれる)に置き換えられます。pysetupという名前の基本的なインストーラーが一部またはdistutils2として提供されており、pipは今後もdistutils2の上に追加機能を提供し続けます。
エリックアラウージョ

7
どうもありがとうございます。私は何年もpythonパッケージに混乱しており、半権威のある道を進むのは心強いことです。
アーロン


21
この「答え」はとても古く、間違っていて面白くもありません。
onlynone 2014


116

REQUIREMENTSファイル。

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

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


1
:これは今だけでなくsetuptoolsのの一部であるように思わpythonhosted.org/setuptools/...
アンドリーDrozdyuk

を使用pipreqsして、requirements.txtファイルを取得する必要があります。これは、pipreqsを呼び出しているプロジェクトに関連するライブラリのみを提供するため、requirements.txtはvirtualenvではなくプロジェクトに基づいています。
SeF

83

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

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


3
興味深いことに、私はそのことを考えたことはありません。また、pipは、少なくともZopeの人々が使用しているsetuptoolsの「extras」機能をサポートしていません。
Sridhar Ratnakumar、2010

1
これは、pip installsにビルド済みのバイナリを要求するのではなく、Windowsにgcc環境が必要であることを示していますか?
WineSoaked

18
Windowsで使用する「正しい」コンパイラはVisual Studioです(2008は最近のバージョンのPythonを信じています)。これをインストールすることは、たとえ無料版であっても、面倒です。通常の Windows上でCの拡張機能をインストールする方法は、プリコンパイルされたバイナリからです。easy_installはこれをサポートしていますが、pipはサポートしていません。
fuzzyman、2011年

8
これが、easy_installを引き続き使用する主な理由です。
ランディシリング

14
上記の回答が出されてから数年経った今、pipがバイナリパッケージをWindowsまたは他のプラットフォームにインストールできないことは、もはや本当ではありません。wheelバイナリ配布形式は、それが可能になります。C拡張モジュールを含む多くのサードパーティパッケージも、さまざまなプラットフォーム用に構築されたホイールとして配布されており、pipは自動的にインストールできます。たとえば、pythonwheels.com
Ned Deily

76

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

出典:http : //pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name


5
なぜこれ以上賛成されないのですか?答えはとても時代遅れです!
Andriy Drozdyuk 2014年

5
ええ、トップの回答は
極端に

2
したがって、easy_installとpipはほぼ同じ程度になりました。これはナンセンスです。easy_installまだ長い間続いていることであり、pipはそれを大幅に改善します。 easy_installは、その一部でsetuptoolsあり、間違いなく最悪のものの1つです。そのため、pipはそれを置き換えることを目指しています。
Piotr Dobrogost

25

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

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

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

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

  • easy_install <package>バイナリパッケージのインストールに使用して、バイナリの構築を回避できます。

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

これは、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/en/latest/

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

乾杯-クリス

簡単な更新:

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

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

ヒント:数人の開発者がこれまでホイール形式のサポートに失敗しましdistutilssetuptools。多くの場合、この1つの単語をで置き換えることにより、このようなパッケージを簡単に変換できますsetup.py


2
上記で更新-私は待機がほぼ終わったと思います;-)
クリスチャン・ティズマー2013

ホイールは2014年春に標準となったので、これをもう一度更新する必要があります。実際には、このような古いスレッドを無限に変更するべきではないと思います。しかし、質問の元の理由がなくなったとき、それは公正ですか?
Christian Tismer、2015年

3

easy_install代わりに使用しなければならない特別なケースに遭遇したばかりpipか、ソースコードを直接プルする必要があります。

パッケージの場合GitPython、中のバージョンがpipある、古すぎる0.1.7から1の間に、easy_installある最新のものです0.3.2.rc1

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

easy_install GitPython

6
私は今これをチェックしました(タイムスタンプを参照)、そしてそれはもはや真実ではありません:pipとeasy_installの両方が同じように機能し、結果としてGitPython 0.3.5になりました。(OS X Yosemiteでのみテスト済み)。あなたのプラットフォームは何ですか?誤解を招く可能性があるため、エントリを更新してください。
Christian Tismer、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.