ピップとコンダの違いは何ですか?


722

pipはPythonパッケージのパッケージマネージャーを知っています。しかし、IPythonのWebサイトでのインストールがIPythonのインストールに使用condaされているのを見ました。

pipIPythonのインストールに使用できますか?condaすでに持っているのに、なぜ別のPythonパッケージマネージャーとして使用する必要があるのpipですか?

違いは何であるpipとはconda


インストールページを注意深く読むと、pipを使用してインストールするための完全な手順が表示され、conda/ enpgkが対象となっnew users who want to get up and running with minimal effortています。ところで、iPythonではなくIPyhton(大文字のI)
Matt

3
1つの違いは、condaよりpipの方が多くのものがインストールできることです。pipは、1つのコマンドでpypiから何でもインストールできます。condaは3つのコマンドを必要とします:skeleton、build、install、そしてそれがうまくいかない場合はおそらくそれ以上。pipは1つのコマンドでgithubまたはソースから何でもインストールできます。condaは「レシピ」を書く必要がありますが、これは簡単ではありません。特に、ドキュメントが常に正しくない/古くなっているように見えるためです。
内部石2016

5
関連質問:pip over condaの利点は何ですか?下にアナコンダの擁護がたくさんありますが、ピップには何もありません。アナコンダがとても素晴らしいのに、なぜピップがまだ標準的なのですか?
Brian Postow 2016年

24
Pipはパッケージマネージャーであり、Virtualenvは環境マネージャーです。Condaは両方です。」(参照
Atcold 2017年

1
観察:私はcondaは、膨大な数のパッケージをダウンロード暗示考えるために使用されていないが、これはもはやapparenlty本当です:あなたはminicondaをインストールすることができ、基本的にちょうどパッケージマネージャであると思われるconda.io/docs/install/quick.html
ヒュー・パーキンス

回答:


520

Condaブログからの引用:

長い間Pythonの世界に携わってきた私たちは、pip、easy_install、virtualenvを知っていますが、これらのツールは私たちの特定の要件のすべてを満たしていませんでした。主な問題は、ソースコードにsetup.pyがなく、Pythonのサイトにファイルをインストールしない、HDF5、MKL、LLVMなどの非Pythonライブラリの依存関係を無視して、Pythonに集中していることです。 -packagesディレクトリ。

したがって、Condaはパッケージツールとインストーラーであり、何を行うかよりも多くのことを行うことを目的としてpipいます。Pythonパッケージ以外のライブラリ依存関係とPythonパッケージ自体を処理します。Condaも、仮想環境を作成virtualenvします。

そのため、Condaは、おそらくPythonと非Pythonの両方のインストールタスクを処理できる別のツールであるBuildoutと比較する必要があります。

Condaは新しいパッケージ形式を導入しているため、pipとCondaを交換して使用することはできません。 pipCondaパッケージ形式をインストールできません。2つのツールを(でインストールすることpipによりconda install pip)並べて使用できますが、相互運用することもできません。

この回答を書いて以来、AnacondaはCondaとPipの理解に関する新しいページを公開しています。

これは、condaとpipの主な違いを強調しています。PipはPythonパッケージをインストールしますが、condaは任意の言語で書かれたソフトウェアを含むパッケージをインストールします。たとえば、pipを使用する前に、システムパッケージマネージャーを介して、またはインストーラーをダウンロードして実行することにより、Pythonインタープリターをインストールする必要があります。一方、CondaはPythonパッケージとPythonインタープリターを直接インストールできます。

そしてさらに

condaパッケージとしては入手できないがPyPIから入手でき、pipでインストールできるパッケージが必要になる場合があります。これらの場合、condaとpipの両方を使用することは理にかなっています。


18
ご説明ありがとうございます。しかし、Condaがpipを置き換えることができるかどうか、私はまだ混乱していますか?つまり、コンダはピップができることをすべて行うことができますか?
lazywei、2014年

10
@lazywei:できるとは思いません。たとえば、Condaがwheelアーカイブ形式をサポートしているようには見えません。彼らは異なる目的を持っています。
Martijn Pieters

45
@ naught101「レシピを作るだけ」それはタイピングほど簡単ではありませんpip install
内部石2016

23
インポート時にpythonが使用する別のバージョンを除いて、pipとcondaを使用して同じパッケージをインストールした場合、どうなるかを説明できる人はいますか?
Lance Ruo Zhang

4
@jrh:OSパッケージマネージャを使用する場合、コア機能としてではなく、同じパッケージの複数のバージョンを並べてインストールすることはできません。Condaは環境を管理します。各環境には、特定のバージョンでインストールされたパッケージが独自に混在しています。したがって、プロジェクトAは、しばらく前に開発されたため、古いバージョンのライブラリFoo(プロジェクトをアップグレードして新しいリリースで動作させるためのリソースがない)に固執することができますが、プロジェクトBは同じライブラリの最新バージョンを必要とします。
Martijn Pieters

246

ここに短い要約があります:

ピップ

  • Pythonパッケージのみ。
  • ソースからすべてをコンパイルします。編集:使用可能な場合、pipはバイナリホイールをインストールします。
  • コアPythonコミュニティに恵まれています(つまり、Python 3.4以降には、pipを自動的にブートストラップするコードが含まれています)。

コンダ

  • Pythonに依存しない。既存のパッケージの主な焦点はPython用であり、実際にConda自体はPythonで記述されていますが、Cライブラリ用のCondaパッケージ、Rパッケージ、または実際には何でも使用できます。
  • バイナリをインストールします。conda buildソースからパッケージをビルドするというツールがありますが、conda installそれ自体はすでにビルドされたCondaパッケージからのものをインストールします。
  • 外部。Condaは、Continuum Analyticsが提供するPythonディストリビューションであるAnacondaのパッケージマネージャーですが、Anaconda以外でも使用できます。既存のPythonインストールでpipインストールすることで使用できます(ただし、既存のインストールを使用する十分な理由がない限り、これはお勧めできません)。

両方の場合において:

  • Pythonで書かれた
  • オープンソース(CondaはBSD、pipはMIT)

Condaの最初の2つの箇条書きは、多くのパッケージでpipよりも有利な点です。ソースからpipをインストールするため、ソースコードをコンパイルできない場合、pipをインストールするのは面倒です(これは特にWindowsで当てはまりますが、Linuxでもパッケージに困難なCまたはFORTRANライブラリがある場合は当てはまります)依存関係)。Condaはバイナリからインストールされます。つまり、誰か(たとえば、Continuum)が既にパッケージのコンパイルというハードワークを行っているため、インストールは簡単です。

独自のパッケージを作成することに関心がある場合にも、いくつかの違いがあります。たとえば、pipはsetuptoolsの上に構築されていますが、Condaは独自の形式を使用しています。


21
pipはソースからすべてをビルドしなくなりました。ホイールが利用可能な場合はpip install --use-wheel <package>、ビルドされたパッケージをインストールします。こちらをご覧ください:wheel.readthedocs.org/en/latest。ただし、ホイールに関する私の個人的な経験では、科学的なホイールパッケージはほとんどないので、純粋に学術的なものです。もちろん、ビルド環境が正確に設定されていないと、pip installはほとんどの場合Windowsでも機能しません。したがって、現時点ではconda ftwです。
Caleb Hattingh 2014年

4
ホイールはまだ新しいもので、デフォルトでは使用されていないため、実際にはまだ多くはありません。ただし、Wheelは依然として「Python固有」のカテゴリに適合します。つまり、Python以外のパッケージ、またはPython以外のパッケージに依存するPythonパッケージには適合しない可能性があります。
asmeurer 2014年

4
私はこれに反対票を投じなければなりませんでした。2番目の箇条書きは単なる歴史的なメモですが、後でそれについても続けます。最近の主な違いは、pipがパッケージマネージャーであるのに対し、condaはより多くの環境マネージャーです。
2016

9
ソースからpipをコンパイルできることは事実ですが、パッケージがホイールに移動するにつれて、これはますます頻度が少なくなっています。最近では、pipを使用すると、必要なもののほとんどを数秒でインストールできます。したがって、この答えが間違っているというわけではありません。ピップが過去数年間で大幅に改善されたため、わずかに時代遅れになっています
Shep

4
pipがソースからのみインストールできることは、これまでにありません。ホイールの前には、デフォルトのバイナリインストール形式としてeggsがあり、Windowsインストール用の推奨配布形式でした。pipは、それが利用可能な最良のオプションである場合、eggをインストールします(まだインストールします)。
Martijn Pieters

96

その他の回答は詳細を公平に説明していますが、いくつかの高レベルのポイントを強調したいと思います。

pipは、Pythonパッケージのインストール、アップグレード、アンインストールを容易にするパッケージマネージャーです。仮想python環境でも動作します。

condaは、任意のソフトウェア(インストール、アップグレード、アンインストール)のパッケージマネージャーです。また、仮想システム環境でも機能します。

condaの設計の目標の1つは、ユーザーが必要とするソフトウェアスタック全体のパッケージ管理を容易にすることです。その1つ以上のpythonバージョンはほんの一部にすぎない場合があります。これには、線形代数などの低レベルのライブラリ、Windowsのmingwなどのコンパイラ、エディタ、HgやGitなどのバージョン管理ツールなど、配布と管理に必要なものが含まれます。

バージョン管理の場合、pipを使用すると、複数のpython環境を切り替えて管理できます。

Condaを使用すると、Cライブラリ、コンパイラ、テストスイート、データベースエンジンなど、バージョン番号が異なる複数の汎用環境を切り替えて管理できます。

CondaはWindows中心ではありませんが、Windowsでは、コンパイルが必要な複雑な科学パッケージのインストールと管理が必要な場合に、現在利用できる優れたソリューションです。

Windowsでpipを使用してこれらのパッケージの多くをコンパイルしようとしてどれだけの時間を失ったか、またはpip installコンパイルが必要なときに失敗したセッションをデバッグしたいと思ったら泣きたいです。

最後のポイントとして、Continuum Analyticsは(無料の)binstar.org(現在はanaconda.orgと呼ばれます)もホストしているため、通常のパッケージ開発者は、パッケージユーザーが利用できる独自の(ビルドされた)ソフトウェアスタックを作成できconda installます。


4
最後のポイントとして、サードパーティのconda-forgeプロジェクトは、Anacondaパッケージを公開するための業界標準のアプローチに急速になっています。最近、マルチフィジックス生物学シミュレータ用のconda-forgeがホストするパッケージいくつか公開しましたが、そのプロセスを十分に推奨することはできません。新しいレシピをconda-forgeに提出するためのGitHub PRベースのピアレビューコンポーネントがありますが、conda-forgeの自動化という点での利点は、事前の時間投資をはるかに上回ります。バム!
セシルカレー

@CecilCurry Kerasコードにインポートし、macにanacondaをインストールしました。Keras もcondaインストールされ、pipインストールされています。端末内に自分のコードを実行しているときに、どのように私は知っていますkeras(インポートされているpip1またはconda1)?
KPMG 2018

25

さらに混乱させることはありませんが、conda環境内でpipを使用して、上記の一般的なコメントとpython固有のマネージャーのコメントを検証することもできます。

conda install -n testenv pip
source activate testenv
pip <pip command>

また、pipを任意の環境のデフォルトパッケージに追加して、毎回存在するようにして、上記のスニペットに従う必要がないようにすることもできます。


これはお勧めできないと思いましたか?
内部石2016

8
conda内でpipを使用することをお勧めします。condaを使用してインストールすることをお勧めしますが、condaビルドを持たないパッケージの場合、pipを使用することは完全に許容されます。
Bradley Kreider 2016年

2
nit:フレーズは次のように思われますfully supportedか?fully recommended私の心には、conda環境内で、condaよりもpipを使用する方がよいことを意味しています。
ヒューパーキンス

22

ContinuumのWebサイトへのデータサイエンス記事のCondaからの引用:

コンダvsピップ

Pythonプログラマーは、おそらくPyPIからパッケージをダウンロードして要件を管理するためのpipに精通しているでしょう。condaとpipはどちらもパッケージマネージャーですが、非常に異なります。

  • PipはPythonパッケージに固有で、condaは言語に依存しません。つまり、condaを使用して任意の言語のパッケージを管理できます。Pipはソースからコンパイルし、condaはバイナリをインストールして、コンパイルの負担を取り除きます。
  • Condaは言語にとらわれない環境をネイティブに作成しますが、pipはvirtualenvに依存してPython環境のみを管理しますが、condaパッケージを常に使用することをお勧めしますが、condaにはpipも含まれているため、2つを選択する必要はありません。たとえば、condaパッケージはありませんが、pipから利用できるpythonパッケージをインストールするには、次のように実行します。
conda install pip
pip install gensim

15

Condaからの引用:神話と誤解(包括的な説明):

...

神話#3:Condaとpipは直接の競合相手

現実:Condaとpipは異なる目的で使用され、タスクの小さなサブセットでのみ直接競合します。つまり、隔離された環境へのPythonパッケージのインストールです。

Pip、これはP ip I nstalls Pの略です ackagesの略で、Pythonの公式に認可されたパッケージマネージャーであり、Pythonパッケージインデックス(PyPI)で公開されたパッケージをインストールするために最もよく使用されます。pipとPyPIはどちらも、Python Packaging Authority(PyPA)によって管理およびサポートされています。

つまり、pipはPythonパッケージの汎用マネージャーです。condaは、言語に依存しないクロスプラットフォーム環境マネージャーです。ユーザーにとって、最も顕著な違いはおそらくこれです:pipは任意の環境内にpythonパッケージをインストールします。condaは、conda環境内に任意のパッケージをインストールします。分離された環境内にPythonパッケージをインストールするだけの場合、依存関係の処理とパッケージの可用性の違いにより、condaとpip + virtualenvはほとんど交換可能です。隔離された環境とは、システムのPythonインストールを変更せずにパッケージをインストールできるconda-envまたはvirtualenvを意味します。

神話#2を脇に置いても、Pythonパッケージのインストールのみに焦点を合わせると、condaとpipは異なる対象者と異なる目的に役立ちます。たとえば、既存のシステムPythonインストール内でPythonパッケージを管理したい場合、condaは役に立ちません。設計上、conda環境内にのみパッケージをインストールできます。たとえば、外部の依存関係に依存する多くのPythonパッケージ(NumPy、SciPy、およびMatplotlibが一般的な例です)で作業し、それらの依存関係を意味のある方法で追跡する場合、pipは役立ちません:設計により、 PythonパッケージとPythonパッケージのみを管理します。

Condaとpipは競合他社ではなく、さまざまなユーザーグループと使用パターンに焦点を当てたツールです。


1
市場ポジショニングの観点を超えて、これが本当に本当かどうかはわかりません。たとえば、contor、pip、source、pytorch.orgの 3種類のインストールを提供し、推奨するpytorchを見てください:conda
Hugh Perkins

2
「隔離された環境へのPythonパッケージのインストール」は、ほとんどのPython開発者がpipを使用する主なものの一種です。
Nick

@Nickは、開発者がすでに「その」仮想環境にいるときではありませんか?私はpipが仮想環境で動作し、システムにインストールする場合と同じようにパッケージをインストールすると思いますが、sanchos.sが言ったように、Pythonパッケージのみをインストールし、基礎となるライブラリを処理しません。私が間違っている場合は誰でも私を修正してください。
Chan Kim

12

WINDOWSユーザー向け

「標準」パッケージングツールの状況は最近改善されています。

  • pypi自体には、9月の時点でホイールパッケージの48%があります。2015年11月(2015年5月の38%、2014年9月の24%から増加)、

  • ホイール形式は、最新のpython 2.7.9に従ってそのまま使用できるようになりました。

「標準」+「微調整」パッケージツールの状況も改善されています。

  • あなたはhttp://www.lfd.uci.edu/~gohlke/pythonlibsでホイール形式のほぼすべての科学的パッケージを見つけることができます

  • mingwpyプロジェクトは、ある日Windowsユーザーに「コンパイル」パッケージを提供し、必要なときにソースからすべてをインストールできるようにする可能性があります。

「Conda」パッケージングは​​、それが提供する市場にとってより良いままであり、「標準」がすべき領域を強調しています改善される。

(また、標準ホイールシステムとコンダシステム、またはビルドアウトでの依存関係の仕様の複数の努力は、あまりPythonicではなく、これらのすべてのパッケージング「コア」手法が一種のPEPを介して収束できるとよいでしょう)



2

pipを使用してiPythonをインストールできますか?

はい、両方です(ページの最初のアプローチ)

pip install ipython

そして(3番目のアプローチ、2番目はconda

GitHubまたはPyPIからIPythonを手動でダウンロードできます。これらのバージョンの1つをインストールするには、それをアンパックし、ターミナルを使用してトップレベルのソースディレクトリから以下を実行します。

pip install .

公式に推奨するインストール方法です。

すでにpipを持っているのに、なぜcondaを別のpythonパッケージマネージャとして使用する必要があるのですか?

ここで言ったように

特定のパッケージが必要な場合(おそらく1つのプロジェクトのみ)、またはプロジェクトを他の人と共有する必要がある場合は、condaがより適切と思われます。

コンダはピップインを超えるYMMV

  • Python以外のツールを使用するプロジェクト
  • 同僚と共有する
  • バージョン間の切り替え
  • ライブラリのバージョンが異なるプロジェクトを切り替える

ピップとコンダの違いは何ですか?

それは他のすべての人から広く回答されています。


1

pip Python専用です

condaAnaconda + R依存関係などの他の科学的パッケージのみを対象としています。Pythonに付属しているAnacondaが必要なわけではありません。Anacondaは、主に機械学習やディープラーニングなどを行う人向けです。カジュアルなPython開発者は、ラップトップでAnacondaを実行しません。


説明は簡単ですが、AnacondaのWebサイトに直接アクセスして、Python 2.xまたは3.xディストリビューションをダウンロードするように教えられました。どうして?>学生が必要とするすべてのパッケージが含まれているため。Numpy、Scipy、matpliotlib、sklearnなど。これが、より細かい基本的な詳細の理解にギャップがある理由です。学生
Rene Duchamp

これは今のところ古い答えですが、コンダ/アナコンダについてあなたが書いたことは完全に間違っているようです。
AMC

0

マイナーな性質のもう1つの違いを発見した可能性があります。私のPython環境は、/usrどちらかというよりも下にあり/homeます。インストールするには、を使用する必要がありますsudo install pip。私にとって、の望ましくない副作用は、sudo install pip他で広く報告されているものとは少し異なりました。そうした後、-installedパッケージをインポートするために、を実行pythonするsudo必要がありましたsudo。私はそれをあきらめ、最終的にはsudo condaへの許可を/usr必要とせずに通常どおりインポートされる環境にパッケージをインストールするために使用できることを発見しました。またはを使用するのではなく、壊れた部分を修正することもありました。 sudopythonsudo condapipsudo pip uninstall pipsudo pip --upgrade install pip

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.