pyenv、virtualenv、anacondaの違いは何ですか?


141

私はPythonを学ぼうとするRubyプログラマーです。それはrbenvからのコピーアンドペーストのようなものなので、私はpyenvでかなり家族です。Pyenvを使用すると、システムに複数のバージョンのpythonを含めることができ、システムの機密部分に触れることなくpythonを分離できます。

すべてのpythonインストールにはpipパッケージが付属していると思います。私がまだ理解していないことは、このvirtualenvとanacondaを使用することを提案する多くの良いpython libがそこにあるということです。pyenv用のvirtualenvプラグインを見つけることもできます。

今、私はこれら2つのpyenvとvirtualenvの目的に混乱しています。pyenvの内部には、virtualenvプラグインがあります。

私の質問は:

  • pyenvとvirtualenvの違いは何ですか?
  • pyenvとvirtualenvの両方でpipコマンドを使用することに違いはありますか?
  • このpyenv virutalenvは何をしますか?

例を挙げた説明は高く評価されます。



この質問を参照してください:virtualenvとpyenvの関係
reza.bm

回答:


152

編集:それの価値が言及pip、ここだけでなく、などcondapip、このトピックに関連する類似点と相違点を持っています

pip:Pythonパッケージマネージャー。

  • あなたpipはruby gemコマンドと同等のpython と考えるかもしれません
  • pip デフォルトではPythonに含まれていません。
  • homebrewを使用してPythonをインストールできます。これにより、pipが自動的にインストールされます。brew install python
  • OSXの最終バージョンには、デフォルトでpipが含まれていませんでした。Macシステムのバージョンのpythonにpipを追加するには、次のようにします。sudo easy_install pip
  • PyPIを使用してPythonパッケージを見つけて公開できます:Pythonパッケージインデックス
  • requirements.txtファイルはルビーに相当します gemfile
  • 要件テキストファイルを作成するには、 pip freeze > requirements.txt
  • この時点で、システムにpythonがインストールされており、システムにインストールされているすべてのpythonパッケージの概要を示すrequirements.txtファイルが作成されています。

pyenv:Pythonバージョンマネージャー

  • docsからpyenvを使用すると、Pythonの複数のバージョンを簡単に切り替えることができます。シンプルで控えめで、UNIXの伝統的な1つの目的を果たす単一目的のツールに従っています。このプロジェクトはrbenvとruby-buildからフォークされ、Python用に変更されました。
  • 多くの人々はpython3を使うことをためらっています
  • Pythonの異なるバージョンを使用する必要がある場合は、pyenvこれを簡単に管理できます。

virtualenv:Python Environment Manager。

  • ドキュメントから対処されている基本的な問題は、依存関係とバージョン、および間接的な権限の1つです。LibFooのバージョン1を必要とするアプリケーションがあり、別のアプリケーションがバージョン2を必要としているとします。これらのアプリケーションを両方使用するにはどうすればよいですか すべてを/usr/lib/python2.7/site-packages(またはプラットフォームの標準の場所が何であれ)にインストールすると、アップグレードしてはならないアプリケーションを意図せずにアップグレードしてしまう状況が発生しやすくなります。
  • を作成するにはvirtualenv、単にを呼び出しますvirtualenv ENV。ここで、ENVは、新しい仮想環境を配置するディレクトリです。
  • を初期化するにはvirtualenv、する必要がありsource ENV/bin/activateます。使用を停止するには、を呼び出しますdeactivate
  • をアクティブにしたら、プロジェクトのファイルに対してvirtualenv実行することにより、ワークスペースのパッケージ要件をすべてインストールできます。pip install -rrequirements.txt

Anaconda:パッケージマネージャー+環境マネージャー+追加の科学ライブラリ。

  • ドキュメントからAnaconda 4.2.0には、Pythonの簡単なインストール(2.7.12、3.4.5、および3.5.2)、およびNumPy、Pandasを含む100以上のビルドおよびテスト済みの科学および分析Pythonパッケージのアップデートが含まれています、SciPy、Matplotlib、IPython、および620以上のパッケージがシンプルなconda install <packagename>
  • 私はWeb開発者として、Anacondaを使用していません。すべてのパッケージを含めて約3GBです。
  • スリム化されたminicondaバージョンがあります。個人的に使用した経験はありませんが、pip+ を使用するよりも簡単なオプションのようvirtualenvです。
  • 一方でconda、あなたがパッケージをインストールすることができますあなたはまださらに、インストールする必要があるパッケージの種類に応じて使用ピップする必要があるかもしれませんので、これらのパッケージは、パッケージは、PyPIより分離されています。

以下も参照してください。


3
これはおそらく今すぐ更新を使用する可能性があります、cf stackoverflow.com/a/49084152/14420
matt wilkie

9
これは、現在Python.orgから公式に推奨されているPythonパッケージツールであると思われるため、pipenvに含めるように更新できますか?
Wavesailor

1
わずか3GB相当のライブラリをインストールする場合の問題は何ですか?これらすべてのライブラリを展開する必要はありませんが、3GB相当のライブラリがインストールされているからといって、すべてのライブラリを展開する必要があるわけではありません。そして、それは最近のごくわずかなハードドライブ容量です。私は現在anacondaインストールを使用しており、envenvで環境を管理していますが、仮想環境にもcondaを使用するかどうかを検討していました(私は使用しないと思います-venvは私にとってよりスムーズなワークフローのようです)。
デビッド

@David少し遅れましたが、venvで展開できますか?
AMC

1

簡単な例え:

  • pyenv〜rbenv
  • ピップ〜バンドラー
  • virtual env〜rvmのgemset。これは、gemsetなしで直接bundlerで管理できます。

私はpython3を使用しているので、venvという名前のpython3組み込み仮想環境を好みます。venvはシンプルで使いやすいです。公式ドキュメントを読むことをお勧めします。ドキュメントは短く簡潔です。

Rubyでは、バンドラーが仮想環境を処理するため、仮想環境は実際には必要ありません。virtual envとbundlerはどちらも優れていますが、コンセプトは異なりますが、同じ問題を解決しようとします。

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