1649

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

4

7 に答える 7

1922

これは初心者向けの個人的な推奨事項です。まず、Python 2 と 3 の両方でさまざまな状況で動作するツールを学習virtualenvpip、必要になったら他のツールを手に入れます。

質問への答えに移りましょう: venv、virtualenv など、これらの類似した名前の違いは何ですか?

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

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

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

  • pyenvPython のバージョンを分離するために使用されます。たとえば、Python 2.7、3.6、3.7、および 3.8 に対してコードをテストする場合は、それらを切り替える方法が必要になります。アクティブ化されると、PATH環境変数の前に が付け~/.pyenv/shimsられます。ここには、Python コマンド ( pythonpip) に一致する特別なファイルがあります。これらは Python が出荷したコマンドのコピーではありません。PYENV_VERSIONこれらは、環境変数、.python-versionファイル、またはファイルに基づいて実行する Python のバージョンをオンザフライで決定する特別なスクリプト~/.pyenv/versionです。pyenvコマンドを使用して、複数の Python バージョンをダウンロードしてインストールするプロセスも簡単になりpyenv installます。

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

  • virtualenvwrapperへの拡張機能のセットですvirtualenv( docsを参照)。mkvirtualenvlssitepackages、および特に異なるディレクトリworkon間を切り替えるためのコマンドを提供します。このツールは、複数のディレクトリvirtualenvが必要な場合に特に便利です。virtualenv

  • pyenv-virtualenvwrapperpyenvは、と同じ作者による のプラグインでpyenv、 に簡単に統合できvirtualenvwrapperますpyenv

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

標準ライブラリ:

  • pyvenv(前のセクションで混同しないでくださいpyenv) は Python 3 に同梱されているスクリプトですが、Python 3.6では問題があったため非推奨になりました (紛らわしい名前は言うまでもありません)。Python 3.6+ では、正確に同等のものはpython3 -m venv.

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

于 2017-01-10T16:27:43.207 に答える
50

これらのツールが解決したい問題から始めましょう。

システム パッケージ マネージャーに必要な Python バージョンがないか、複数の Python バージョンを並べてインストールしたい (Python 3.9.0 と Python 3.9.1、Python 3.5.3 など)

次に、pyenv を使用します。

競合する依存関係が異なる複数のアプリケーションをインストールして実行したいと考えています。

次に、virtualenv または venv を使用します。これらはほぼ完全に互換性があります。違いは、virtualenv が古い python バージョンをサポートし、いくつかのマイナーな固有機能を備えているのに対し、venv は標準ライブラリに含まれていることです。

/application/ を開発していて、依存関係を管理し、プロジェクトの依存関係の依存関係の解決を管理する必要があります。

次に、pipenv または詩を使用します。

/library/ または /package/ を開発していて、ライブラリ ユーザーがインストールする必要がある依存関係を指定したい

次に、setuptools を使用します。

私はvirtualenvを使用しましたが、virtualenvフォルダーがさまざまなプロジェクトフォルダーに散らばっているのは好きではありません。環境の一元管理と簡単なプロジェクト管理が必要

次に、virtualenvwrapper を使用します。バリアント: pyenv も使用する場合は pyenv-virtualenvwrapper。


非推奨

  • pyvenv。これは非推奨です。代わりに venv または virtualenv を使用してください。pipenv または pyenv と混同しないでください。
于 2021-01-22T23:35:55.977 に答える