37

Python 3.4.0 をインストールし、 で仮想環境を作成しましたpython -m venv myenv。仮想環境で Python のバージョンを変更するにはどうすればよいですか? ドキュメントには次のように記載されています。

各仮想環境には独自の Python バイナリがあり (さまざまな Python バージョンの環境を作成できます)、サイト ディレクトリにインストールされた Python パッケージの独自の独立したセットを持つことができます。

アップデート

virtualenvではなく、標準ライブラリのvenvについて質問することに注意してください。いくつかのリンクを提供させてください。

--pythonvenv にフラグのようなものが表示されません。

venv と virtualenv は完全に似ていますか? venv はあまり人気がなく、誰も使用していないため、virtualenv が標準のままですか?

4

5 に答える 5

29

Linux/Mac では、メイン バージョンの隣に複数のバージョンの Pythonを簡単にインストールでき、標準ライブラリのvenvパッケージを使用して、各バージョン >= 3.3 から仮想環境を作成できます。

venv を作成する

$ python3.3 -m venv myvenv_foo  # Create a python3.4 venv named 'myvenv_foo'
$ python3.4 -m venv myvenv_bar  # Create a python3.4 venv named 'myvenv_bar'
$ python3.5 -m venv myvenv_baz  # Create a python3.5 venv named 'myvenv_baz'
# etc...

venv を有効にする

source myvenv_foo/bin/activate  # Activates venv 'myvenv_foo'

venv を無効にする

deactivate

注意:pythonvspythonX.X

複数の Python バージョンがインストールされている場合は、バージョン num をコマンドに追加することでそれぞれにアクセスできます (例: 、python3.5などpython3.6)。python活性化しているので。例えば:

$ python -V # Use the *clean* 'python' command to show the main version of the OS.
Python 2.7.6 
$ python3.5 -m venv myvenv_foo # Create a new venv from 'python3.5'.
$ source myvenv_foo/bin/activate # Activate venv.
$ python -V # The *clean* 'python' command is now bound to your activated venv.
Python 3.5.2 
$ deactivate  # Deactivate venv.
$ python -V  # Now the *clean* command is bound back to the main version.
Python 2.7.6 

ノート

Pipenvを使用して、venvパッケージ上で仮想環境を作成/処理することをお勧めします。

公式ドキュメントから:

複数の仮想環境を直接管理するのは面倒なので、依存関係管理のチュートリアルでは、作業するプロジェクトとアプリケーションごとに個別の仮想環境を自動的に管理する、より高度なツールである Pipenv を紹介します。

于 2016-11-06T19:55:38.837 に答える
6

似たような名前と目的を持ついくつかの python モジュール/ライブラリ (組み込みおよびサードパーティ) があるため、これは非常に良い質問です。OPの混乱には完全に共感できる。

実際には、2 つの異なる行動/責任があります。

1)。(システム) Python インタープリターの異なるバージョン間で切り替える機能。2.7.10または3.5.0など

2)。仮想環境を作成する機能 (これは、特定のバージョンの Python のすべての配管 (バイナリとライブラリ) を含む単なるローカル フォルダーです。これは、特定のバージョンの Python の凍結されたローカル インスタンスと考えることができます。基本的には、自己完結型の軽量の python インストール。

上記の2)pyvenvを提供するようなモジュール。これにより、作成に使用された Python のバージョンに設定された仮想環境を作成できます。

$ python --version
Python 3.5.0
$ pyvenv myenv   # myenv is now a local environment using Python 3.5.0

pyvenv の詳細については、library/venvを参照してください。

pyenv一方、(名前が紛らわしいですよね?注意、pyenvであり、py v envではありません)のようなモジュールは、システムが基本的に実行しているpythonのバージョンを制御します。これにより、上記の1)が提供されます。したがって、pyvenv などを介して特定の仮想環境を実行していない場合、これは使用中の「グローバル」バージョンです。実際には、それよりも少し複雑ですが (ローカル構成などをセットアップすることもできるため)、基本的にはこの説明で十分です。

pyenv の詳細については、github.com/yyuu/pyenv を参照してください

Python バージョン 2.7.10 と 3.5.0 を実行したい場合、pyenv を使用してこれら 2 つのバージョン (ここではグローバルとして選択) をインストールし、次を使用してこれを表示できます。

$ pyenv versions
  system
* 2.7.10 (set by ~/.pyenv/version)
* 3.5.0 (set by ~/.pyenv/version)

$ python --version
Python 3.5.0

$ which python
~/.pyenv/shims/python

$ python2.7 --version
Python 2.7.10

はい、上記のモジュール/ライブラリのそれぞれにいくつかの重要な代替手段があります。Reddit / SOF などで議論が白熱し、どちらが最適かを詳しく説明し、議論しています。それらの多くは非常に似たようなことをしています...

于 2015-11-21T05:25:53.513 に答える
1

それは単に不可能です。特定の Python バージョンの Python venv を作成するには、この特定のバージョンが必要です。

明らかに、Python インタープリターは、以前のバージョンのすべてをその動作に「含める」わけではありません。Python 3.4.1 には、内部のどこにも Python 2.7.8 実行可能ファイルを含めることはできません。

于 2015-03-06T13:19:02.957 に答える