似たような名前と目的を持ついくつかの 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 などで議論が白熱し、どちらが最適かを詳しく説明し、議論しています。それらの多くは非常に似たようなことをしています...