web-dev-qa-db-ja.com

Condaはvirtualenvの必要性を置き換えますか?

私が最近発見した Conda SciPyのインストールに問題があった後、特に私が開発しているHerokuアプリケーションで。

Condaを使用すると、 virtualenv が実行するのと非常によく似た環境を作成できます。私の質問は:

  1. Condaを使用すれば、それはvirtualenvの必要性を置き換えるでしょうか?そうでない場合、どうやって2つを一緒に使用するのですか? virtualenvをCondaに、またはCondaをvirtualenvにインストールしますか?
  2. 私はまだピップを使用する必要がありますか?もしそうなら、私はまだ孤立した環境でpipでパッケージをインストールすることができますか?
162
Johan
  1. コンダはvirtualenvを置き換えます。私の意見では、それは良いです。 Pythonに限定されず、他の言語にも使用できます。私の経験では、特に科学的なパッケージでは、はるかにスムーズな経験を提供します。私が初めてMayaViをMacに正しくインストールしたのはcondaでした。

  2. あなたはまだpipを使うことができます。実際、condaは、新しい各環境にpipをインストールします。それはpipインストールパッケージについて知っています。

例えば:

conda list

現在の環境にインストールされているすべてのパッケージを一覧表示します。コンダインストールパッケージは次のように表示されます。

sphinx_rtd_theme          0.1.7                    py35_0    defaults

そしてpip経由でインストールされたものは次のようになります。

wxpython-common           3.0.0.0                   <pip>
131
Mike Müller

簡単な答えは、あなただけのコンダが必要です。

  1. Condaは、pipとvirtualenvの機能を1つのパッケージに効果的に組み合わせているため、condaを使用している場合はvirtualenvは必要ありません。

  2. あなたは、condaがサポートしているパッケージの数に驚くでしょう。それが十分でない場合は、condaの下でpipを使用できます。

これはconda、pip、およびvirtualenvを比較するcondaページへのリンクです。

https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands

46
Mad Physicist

仮想環境とpip

Anacondaでは、 作成 および 削除 conda環境が簡単であることを付け加えます。

> conda create --name <envname> python=<version> <optional dependencies>

> conda remove --name <envname> --all 

有効化された環境 の場合、condaまたはpipでパッケージをインストールしてください。

(envname)> conda install <package>

(envname)> pip install <package>

これらの環境は condaのpip風パッケージ管理 と密接に関係しているので、環境を作成してPythonと非Pythonパッケージの両方をインストールするのは簡単です。


ジュピター

さらに、 ipykernel を環境にインストールすると、Jupyterノートブックのカーネルドロップダウンメニューに新しいリストが追加され、再現可能な環境がノートブックに拡張されます。 Anaconda 4.1以降、 nbextensionsが追加されました 、より簡単にノートブックに拡張機能を追加する。

信頼性

私の経験では、condaはnumpypandasのような大きなライブラリをインストールするのがより速くより信頼性があります。さらに、環境の保存された状態を転送したい場合は、 sharing または clone an envでそれを行うことができます。

28
pylang

Condaをインストールすると、あなたが望むようにpython環境を作成したり削除したりできるようになります。そのため、 virtialenv と同じ機能を提供します。

どちらのディストリビューションの場合でも、あなたが望むように(おそらくpipを使って)pythonパッケージをインストールしたり削除したりできる、独立したファイルシステムツリーを作成することができます。ユースケースに合わせて同じライブラリの異なるバージョンを使用したい場合、または単にディストリビューションを試して後で削除してディスク容量を節約したい場合に便利です。

違い:

ライセンス契約virtualenvが最も自由度の高い MITライセンスConda が3節BSDライセンスを使用しています。

Condaはあなた自身の荷物管理システムを提供します。このパッケージ管理システムは、一般的な非pythonソフトウェアの(ほとんどの一般的なシステム用の)プリコンパイルされたバージョンを提供しています。つまり、あなたのシステム用に最適化されたC/C++コードをコンパイルする必要はありません。それは私たちの大部分にとって大きな救済ですが、それはそのようなライブラリのパフォーマンスに影響を与えるかもしれません。

Virtualenvとは異なり、Condaは少なくともLinuxシステム上でいくつかのシステムライブラリを複製します。このライブラリは同期しなくなり、プログラムの動作に矛盾が生じる可能性があります。

評決:

機械学習であなたの方法を始める間、コンダは素晴らしくて、あなたのデフォルト選択であるべきです。それはあなたにgccと多数のパッケージで面倒な時間を節約するでしょう。それでも、Condaはvirtualenvに代わるものではありません。それは常に望まれないかもしれないいくつかの追加の複雑さを導入します。それは別のライセンスの下に来ます。分散環境またはHPCハードウェアでcondaを使用しないようにすることをお勧めします。

12
y.selivonchyk

もう一つの新しいオプションと私の現在の環境を起動させる方法は Pipenv

現在、Python.orgから公式に推奨されているPythonパッケージ化ツールです。

6
Johan

はい、condavirtualenvよりもインストールがはるかに簡単で、後者に代わるものになります。

1
Liang Huang