web-dev-qa-db-ja.com

Pipとcondaはどう違いますか?

私はpipがpythonパッケージのパッケージマネージャであることを知っています。しかし、私はIPythonのウェブサイトへのインストールがcondaを使ってIPythonをインストールするのを見ました。

pipを使ってIPythonをインストールできますか? condaをすでに持っているのになぜpipを別のpythonパッケージマネージャとして使うべきなのでしょうか。

pipcondaはどう違いますか?

566
lazywei

Condaブログ :からの引用

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

そこでCondaは、pipがすること以上のことをすることを目的としたパッケージングツールとインストーラです。 Pythonパッケージのライブラリ依存関係 outside およびPythonパッケージ自体を処理します。 Condaはvirtualenvのように仮想環境も作成します。

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

Condaは新しいパッケージフォーマットを導入しているので、pipとCondaを同じ意味で使うことはできません。 pipはCondaパッケージフォーマットをインストールできません。 2つのツールを(conda install pipと共にpipをインストールすることによって)並べて使用することはできますが、どちらも相互運用できません。

400
Martijn Pieters

これが簡単な要約です。

ピップ

  • 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の外部でも使用できます。あなたはそれをpipインストールすることによって既存のPythonインストールでそれを使用することができます(あなたが既存のインストールを使用する正当な理由がない限りこれはお勧めできませんが)。

両方の場合において:

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

Condaの最初の2つの箇条書きは、多くのパッケージにとってピップよりも有利な点です。 pipはソースからインストールされるので、ソースコードをコンパイルすることができない場合、それを一緒にインストールするのは面倒かもしれません(これはWindowsでは特に当てはまりますが、パッケージにCまたはFORTRANライブラリが難しい場合はLinuxでも当てはまります)依存関係)。 Condaはバイナリからインストールされます。つまり、誰か(例えばContinuum)はすでにパッケージをコンパイルするという大変な作業をしているので、インストールは簡単です。

あなたがあなた自身のパッケージを構築することに興味があるならば、いくつかの違いもあります。たとえば、pipはsetuptoolsの上に構築されていますが、condaは独自のフォーマットを使用しています。これには(静的で、Pythonに依存しないなどの)利点があります。

221
asmeurer

他の答えは詳細の公正な説明を与えるが、私はいくつかの高レベルのポイントを強調したい。

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

condaは 任意のソフトウェア (インストール、アップグレード、アンインストール)用のパッケージマネージャです。これはvirtual system environmentでも動作します。

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できます。

85
Caleb Hattingh

あなたをさらに混乱させないために、あなたはあなたのconda環境の中でpipを使うこともできます。

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

また、毎回存在するので、どの環境のデフォルトパッケージにもpipを追加することができるので、上記のスニペットに従う必要はありません。

24
vijay venkatesh

連続ウェブサイトへの Conda for Data Science 記事からの引用:

コンダvsピップ

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

  • PipはPythonパッケージに固有であり、condaは言語に依存しないため、condaを使用して任意の言語のパッケージを管理できます。pipはソースからコンパイルし、condaはバイナリをインストールするので、コンパイルの負担が軽減されます。
  • Condaはネイティブに言語に依存しない環境を作成しますが、pipはPython環境のみを管理するためにvirtualenvに依存します。常にcondaパッケージを使用することが推奨されますが、condaにはpipも含まれます。例えば、condaパッケージを持っていないがpipを通して利用可能なpythonパッケージをインストールするには、単に実行してください。例えば:
conda install pip
pip install gensim
19
CheTesta

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ユーザーに提供し、必要なときにソースからすべてをインストールできるようにします。

「コンダ」パッケージングは​​、それがサービスを提供する市場にとって優れたままであり、「標準」shouldが改善される領域を強調しています。

(また、標準ホイールシステムとcondaシステム、またはビルドアウトにおける依存関係の仕様の複数の努力はあまりPythonyではありません。これらすべてのパッケージング 'コア'テクニックが一種のPEPを介して収束できれば素晴らしいでしょう)

12
stonebig

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

...

神話#3:コンダとpipは直接の競合相手です

現実:Condaとpipは異なる目的を果たしており、ごく一部のタスク、つまり独立した環境にPythonパッケージをインストールすることにおいてのみ直接競合しています。

_ p _ ip _ i _ nstalls _ p _ ackagesを表すPipは、Pythonの公認のパッケージマネージャであり、最も一般的に使用されています。 Python Package Index(PyPI)で公開されているパッケージをインストールします。 pipとPyPIはどちらもPython Packaging Authority(PyPA)によって管理およびサポートされています。

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

Myth#2を別にしても、Pythonパッケージのインストールだけに焦点を当てると、condaとpipは異なるオーディエンスと異なる目的に役立ちます。たとえば、既存のシステムPythonインストール内でPythonパッケージを管理したい場合、condaは役に立ちません。設計上、conda環境内にのみパッケージをインストールできます。たとえば、外部の依存関係に依存する多くのPythonパッケージ(NumPy、SciPy、およびMatplotlibが一般的な例)を使用したい場合、それらの依存関係を意味のある方法で追跡しながら、pipは役に立ちません。 PythonパッケージとPythonパッケージのみを管理します。

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

11
sancho.s

pipはPython専用です

condaはAnaconda + Rの依存関係などの他の科学的なパッケージのためだけのものです。すでにPythonに付属しているAnacondaを誰もが必要とするわけではありません。 Anacondaは主に機械学習やディープラーニングなどを行う人々のためのものです。Casual Python devは彼のラップトップ上でAnacondaを実行しません。

3
Galapagos

IPythonをインストールするのにpipを使用できますか?

確かに、両方(ページの最初のアプローチ)

pip install ipython

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

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

pip install .

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

すでにpipを持っているのになぜcondaを他のpythonパッケージマネージャとして使うべきなのですか?

言ったように ここ

特定のパッケージが必要な場合、おそらく1つのプロジェクトだけの場合、またはプロジェクトを他の人と共有する必要がある場合は、condaの方が適切なようです。

コンダはピップインを上回る( _ ymmv _

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

Pipとcondaはどう違いますか?

それは他の誰もが広く答えています。

0
serv-inc

私はマイナーな性質のもう一つの違いを見つけたかもしれません。私のPython環境は、/usrなどではなく/homeの下にあります。インストールするためには、Sudo install pipを使わなければなりません。私にとって、Sudo install pipの望ましくない副作用は、他の場所で広く報告されているものとはわずかに異なります。そうした後、pythonをインストール済みパッケージのいずれかをインポートするには、SudoSudoとともに実行する必要があります。私はそれをあきらめ、最終的にSudo condaを使って/usrの下の環境にパッケージをインストールすることができ、それはSudoに対するpython許可を必要とせずに通常インポートされることがわかりました。私はSudo condaSudo pip uninstall pipを使うよりもむしろSudo pip --upgrade install pipを使って壊れたpipを修正しました。

0
J B