venv、pyvenv、pyenv、virtualenv、virtualenvwrapper、pipenv などの違いは何ですか? 質問する

venv、pyvenv、pyenv、virtualenv、virtualenvwrapper、pipenv などの違いは何ですか? 質問する

Python 3.3 の標準ライブラリには、新しいパッケージ が含まれていますvenv。これは何を行うのでしょうか。また、正規表現 に一致する他のすべてのパッケージとどう違うのでしょうか(py)?(v|virtual|pip)?env

ベストアンサー1

初心者への個人的なアドバイスは、まずは学ぶことから始めることですvirtualenvそしてpipPython 2 と 3 の両方でさまざまな状況で動作するツールを試し、必要になったら他のツールも選びます。

さて、次の質問に答えましょう。venv、virtualenv など、似た名前のものの違いは何でしょうか?

標準ライブラリにない PyPI パッケージ:

  • virtualenvは、Python ライブラリ用の分離された Python 環境を作成する非常に人気のあるツールです。このツールに慣れていない場合は、非常に便利なツールなので、ぜひ習得することをお勧めします。

    これは、一連のファイルをディレクトリ (例: env/) にインストールし、PATH環境変数を変更してカスタムbinディレクトリ (例: ) をプレフィックスとして追加することで機能します。またはバイナリenv/bin/の正確なコピーがこのディレクトリに配置されますが、Python は、まず環境ディレクトリでパスを基準としたライブラリを探すようにプログラムされています。 これは Python の標準ライブラリの一部ではありませんが、PyPA (Python Packaging Authority) によって正式に承認されています。 をアクティブ化すると、 を使用して仮想環境にパッケージをインストールできますpythonpython3pip

  • pyenvは、Python のバージョンを分離するために使用されます。たとえば、コードを Python 2.7、3.6、3.7、3.8 でテストしたい場合、それらのバージョンを切り替える方法が必要になります。有効にすると、環境PATH変数に がプレフィックスとして追加され、Python コマンド ( 、 )~/.pyenv/shimsに一致する特別なファイルがあります。これらは Python に同梱のコマンドのコピーではなく、環境変数、ファイル、またはファイルに基づいて、実行する Python のバージョンをその場で決定する特別なスクリプトです。また、 コマンド を使用して、複数の Python バージョンのダウンロードとインストールのプロセスが容易になりますpythonpipPYENV_VERSION.python-version~/.pyenv/versionpyenvpyenv install

  • pyenv-virtualenvpyenvは、と同じ作者によるのプラグインで、と を同時に便利にpyenv使用できるようにします。ただし、Python 3.3 以降を使用している場合、は の代わりにを実行しようとします (使用可能な場合)。便利な機能が必要ない場合は、を使用せずにと を一緒に使用できます。pyenvvirtualenvpyenv-virtualenvpython -m venvvirtualenvvirtualenvpyenvpyenv-virtualenv

  • virtualenvwrappervirtualenvは(参照ドキュメントmkvirtualenv) は、、、などのコマンドを提供しlssitepackages、特にworkon異なるディレクトリ間を切り替えるのに便利virtualenvです。このツールは、複数のディレクトリが必要な場合に特に便利ですvirtualenv

  • pyenv-virtualenvwrapperpyenvは、と同じ作者による、pyenv便利に統合するための のプラグインですvirtualenvwrapperpyenv

  • pipenvPipfileは、、pipおよびをvirtualenvコマンドライン上の 1 つのコマンドに結合することを目的としています。virtualenvディレクトリは通常 に配置され~/.local/share/virtualenvs/XXX、 はXXXプロジェクト ディレクトリのパスのハッシュになります。これは とは異なりますvirtualenv。 では、ディレクトリは通常現在の作業ディレクトリにあります。 は、 Python アプリケーション (ライブラリではなく) を開発するときに使用することを目的としています。 の代替として などpipenvがありますが、この質問は同様の名前のパッケージについてのみであるため、ここではリストしません。pipenvpoetry

標準ライブラリ:

  • pyvenv(混同しないようにpyenv前のセクションで説明したスクリプトは、Python 3.3から3.7に同梱されているスクリプトです。Python 3.8 から削除されました問題があったためです (紛らわしい名前は言うまでもありません)。 を実行すると、python3 -m venvとまったく同じ効果が得られますpyvenv

  • venvは Python 3 に同梱されているパッケージで、 を使用して実行できますpython3 -m venv(ただし、何らかの理由で、Ubuntu/Debian などの一部のディストリビューションでは、別のディストリビューション パッケージに分離されていますpython3-venv)。 と同じ目的を果たしますvirtualenvが、機能のサブセットのみを備えています (ここで比較をご覧ください) はvirtualenvよりも人気がありvenv、特に前者は Python 2 と 3 の両方をサポートしているためです。

おすすめ記事