私は最近、ワークフローでvirtualenvとvirtualenvwrapperを使用する方法を学びましたが、pyenvがいくつかのガイドで言及されているのを見てきましたが、pyenvが何であり、virtualenvとどのように異なる/類似しているのか理解できませんpyenvは、virtualenvのより良い/新しい代替物ですか、それとも無料のツールですか?後者の場合はどう違うのか、2つ(および該当する場合はvirtualenvwrapper)はどのように連携するのですか?
Pyenvとvirtualenvは、さまざまな方法で機能する非常に異なるツールです異なるもの:
Pyenvはbash拡張機能です-Windowsでは機能しません-Python、pipなどへの呼び出しをインターセプトして、それらのいくつかのシステムpythonツールチェーン。そのため、選択したpythonバージョンにインストールしたすべてのライブラリが常に利用可能です。したがって、異なるバージョンのpythonを切り替える必要があるユーザーに適しています。
VirtualEnv、純粋なpythonですので、どこでも動作し、オプションで特定のバージョンのコピーを作成しますof、pythonと、現在のシステムツールチェーンへのリンクを含む場合と含まない場合があるアクティベート環境のローカルpip。ライブラリの既知のサブセットのみをインストールできない場合その環境。そのため、exactlyご存じのように、どのバージョンでどのライブラリが使用され、グローバルな変更が影響を与えないかは、テストと展開の方がほぼ確実に優れていますモジュール。
Python 3.3以降からvenvと呼ばれるVirtualEnvの組み込み実装があることに注意してください(一部のインストールでは、pyvenvというラッパーがあります。このラッパーは Python 3.6で非推奨です) )、おそらく好みで使用されるべきです。ラッパーで発生する可能性のある問題を回避するには、/path/to/python3 -m venv desired/env/path
を使用して直接使用するか、py -3 -m venv desired/env/path
を使用するウィンドウで優れたpy
pythonセレクターを使用することをお勧めします。 desired/env/path
configureで指定されたディレクトリを作成し、適切に設定します。一般に、VirtualEnvを使用するのと非常によく似ています。
上記の1つまたは複数の使用を支援できるため、言及して検討する価値のあるツールがいくつかあります。
virtualenv
を使用すると、カスタムPythonインストールを作成できます。プロジェクトのサブディレクトリ内。したがって、各プロジェクトは、それぞれのvirtualenvの下に独自のpython
(または複数)を持つことができます。一部/すべてのvirtualenvが競合せずに同じバージョンのpython
(例:2.7.16)を持っていることさえ完全に問題ありません-それらは別々に住んでいてお互いを知りません。これらのpython
のいずれかを使用する場合は、activate
を使用する必要があります(PATH
を一時的に変更するスクリプトを実行して、virtualenvのbin/
ディレクトリが最初に来るようにします)。その時点から、python
(またはpip
など)を呼び出すと、deactivate
(PATH
を復元する)までそのvirtualenvのバージョンが呼び出されます。
pyenv
は、virtualenv
よりも広範なスケールで動作します。Pythonインストールのレジスタを保持し(新しいインストールに使用できます)、Pythonのどのバージョンを実行するかを構成できます。 python
コマンドを使用します。似ていますが、実際の使用は少し異なります。それは、そのshim python
スクリプトをPATH
の前に(永続的に)追加し、次にどの「実際の」python
を呼び出すかを決定することによって機能します。 (pyenv-virtualenv
プラグインを使用して)virtualenv pythonの1つを呼び出すようにpyenvを構成することもできます。 Python pyenv
を使用してインストールするバージョンは、その$(pyenv root)/versions/
ディレクトリ(デフォルトでは、pyenvルートは〜/ .pyenv)に移動するため、virtualenvよりも「グローバル」です。通常、pyenv
を介してインストールされたPythonバージョンを複製することはできません。少なくともそうすることは主要なアイデアではありません。
特定のPythonバージョンを使用してvirtualenvを作成するには、そのバージョンをシステムのどこかに(PATH
上にあるかどうかに関係なく)、新しく作成したvirtualenvにクローンする必要があります。もちろん、特定のバージョンを取得する1つの方法は、pyenv
を介してインストールすることです。それが完了すると、異なるモジュール(またはそのバージョン)をインストールすることにより、個々のvirtualenvを自由に発散させることができます。
要するに:
virtualenv
を使用すると、既存のものからクローンを作成して、ローカルの独立したpythonインストールを作成できます。pyenv
を使用すると、異なるバージョンのpythonを同時に(システム全体またはローカルユーザー用に)インストールし、任意の時点で実行する多数のpythonを選択できます(virtualenvまたはアナコンダ)