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