web-dev-qa-db-ja.com

python 3.3を使用する場合、pythonパッケージvirtualenvは必要ですか?

CristophGohlkeのpython packages )を調べていたところ、Python 3.3のパッケージVirtualenvがあることに気づきました。

標準のpythonライブラリv3.3にはパッケージvenvがあるので、利点があるかどうか疑問に思いましたこのパッケージを個別にインストールします。

編集:両方のパッケージのドキュメントから、 virtualenv 1.8.2 およびvenv私はvenv標準ライブラリパッケージには、次の機能がありません。

  1. --no-site-packagesオプション
  2. setuptoolsまたは配布のいずれかを選択
  3. デフォルトでは利用できないため、pipをインストールできませんpythonインストール
  4. 仮想環境内でのプロンプトプレフィックスのカスタマイズはありません--Prompt=PROMPT

他に見つけられなかった違いがあれば、ここに書いてください。

35
aristotelis

通常、virtualenvパッケージは、python3.3以降を使用する場合は必要ありません。これは、 PEP 405 を介して標準ライブラリに組み込まれているためです。質問でお気づきのように、virtualenvの最新バージョンと標準ライブラリのvenvパッケージの間には比較的小さな違いがいくつかあります。一部(例:--no-site-packages)、これはさまざまな実装に起因します。 venvは標準ライブラリにあるため、自己完結型のpythonインストールを作成するために、virtualenvが行う曲がったフープの一部をジャンプする必要はありません。 Pythonのsiteモジュールの多くをコピーするように。

最良のリソースは、実際にはPEPを完全に読むことです。

24

質問のために

Stdlibのvenvでpythonパッケージvirtualenvが必要ですか?

(または違いは何ですか?)

  1. --no-site-packagesは両方のデフォルトです。 --system-site-packagesオプションは存在しますが、 壊れています
  2. 配布は非推奨です ...ここには何も表示されません
  3. Python3.4以降、ensurepipはvirtualenv内でpipを提供します。 Ubuntu/Debianで動作させるには、必ずpython3-venvパッケージをインストールしてください
  4. ここに変更はありません

Venvが最初に発表されたとき、「古いpythonのvirtualenv」のバグ修正を提供するためにメンテナンスモードになり、すべての開発がstdlibvenvに焦点を移すことを望んでいました。 virtualenvのプロジェクトの目標/ロードマップについてはよくわかりませんが、私が望んでいたことが実現していないのではないかと心配しています。したがって、少なくとも当面は、元のvirtualenvを使用し続けます。

2
berdario

pyvenvは、Python 3.3および3.4​​の仮想環境を作成するための推奨ツールでした

python 3.5以降の使用:

python3 -m venv

venvは、Pythonの内部にアクセスできる組み込みモジュールです

pyvenvは3.6で非推奨になりました

出典: https://docs.python.org/3/library/venv.html

1
iamakheelahmed