Pythonバージョンマネージャー

同じマシン上で複数のバージョンのpythonを保持すると便利な場合があります。 2つのプロジェクトの開発には、2番目と3番目のpythonブランチが必要だとしましょう。 または、古いバージョンのpythonを使用するプロジェクトをサポートしていますか。



通常、このために、仮想環境virtualenvまたはそのラッパーvirtualenvwrapperを使用します。 すでに多くの同様の記事があり、ユーティリティ自体のドキュメントは非常によく説明されているため、これについては説明しません。 virtualenvまたはvirtualenvwrapperを検索エンジンに打ち込めば十分です。

しかし、それらに加えて、この記事ではpythonバージョンマネージャーについてお話したいと思います。 誰に興味がありますか?



Pythonの複数のバージョンを使用するには、それらを手動でインストールするか、バージョンマネージャーを使用します。 そのうちの2つがあります: pythonbrew現在開発されていません )とpyenvです。 両方のマネージャーはウィンドウ( pythonbrewpyenv )をサポートしていないため、このプラットフォームで作成するpythonistsはすべてを手動で解決するか、必要なバージョンへのパスを変更する独自のユーティリティを作成する必要があります。 コメントでこの状況に対処できるのは誰ですか。

pythonbrewはこの記事ではサポートされなくなったため、考慮されません。



PSこの記事は、 OS Ubuntu 12.04でテストされた例を提供します。 それらを繰り返してみる場合は、ディストリビューションに関する修正を行ってください。



手動の方法



いくつかのバージョンのpythonを使用するには、指定されたプレフィックスに必要なバージョンをインストールできます。 たとえば、権限を賢くしないために、ユーザーディレクトリに追加の2バージョンのpython(2.7.6および3.3.2)をインストールします。

2.7.6

$ mkdir -p ~/python/src/ && cd ~/python/src/ $ wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz $ tar -xf ~/python/src/Python-2.7.6.tar.xz && cd ./Python-2.7.6 $ ./configure --prefix=$HOME/python/2.7.6/ $ make && make install
      
      





3.3.2では、同様の操作を行います。

 $ wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz ~/python/src/ $ tar -xf ~/python/src/Python-3.3.2.tar.xz && cd ./Python-3.3.2 $ ./configure --prefix=$HOME/python/3.3.2/ $ make && make install
      
      





これで、これらのバージョンを使用する仮想環境を作成できます。

 $ virtualenv -p ~/python/2.7.6/bin/python env && . ./env/bin/activate
      
      





またはvirtualenvwrapper経由:

 $ mkvirtualenv -p ~/python/2.7.6/bin/python evnwrapper
      
      





実際、この方法に基づいて、マルチホスティングの作成に関する記事が説明されています。

さらに、これらのバージョンのいずれかをデフォルトでpythonとして使用する必要がある場合、pythonインタープリターへのパスを環境変数に追加する必要があります。

 $ echo 'export PATH=~/python/2.7.6/bin/' >> ~/.bashrc
      
      





したがって、bashrcの代わりに、シェルに応じてbash_profile、zshrc、kshrc、profileを設定します。

 $ . ~/.bashrc
      
      





また、必要に応じて、 setuptoolsを事前にインストールしてpipインストールできます。

 $ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python $ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py -O - | python
      
      





ええと、まあ、すべてがそうです。 そして今、それを簡単にする方法について、私はpythonバージョンマネージャーを使用します。



Pyenv



一般に、怠け者の場合、上記のすべてを実行することはできませんが、pyenvユーティリティを使用すると、環境やパスとの対話が簡単になります。



それでは、このユーティリティの特徴は何ですか? プロジェクトの作者の言葉から彼女が言えることは次のとおりです。



デフォルトでは、Pythonのすべてのバージョンは~/.pyenv/versions/



で利用できます。 Pythonのバージョンは、グローバルコンテキストとローカルコンテキストの両方で変更できます(たとえば、特定のプロジェクト用)。



pyenvのインストール方法については、 手順に詳しく説明されています 。 また、作者には、pyenv自体と一緒に、virtualenvを含む追加のプラグインを配置するスクリプトがあります。 virtualenvwrapper用のプラグインもインストールできます



インストールする前に、 いくつかの依存関係を設定する必要があります。

 # apt-get install make libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev
      
      





インストールを開始する前に、gitがインストールされていることを確認してください。

 # apt-get install git
      
      





次に、 指示に従ってインストールします

 $ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
      
      





または:

 $ curl https://raw.github.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
      
      





2番目の場合、追加のプラグインを使用してインストールが行われます。

次に、すべてが機能するように、bashrcを補完してシェルをリロードします。

 $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc $ . ~/.bashrc
      
      





ユーティリティを更新またはバージョンを変更するには、gitを使用します。

取扱説明書
pyenvバージョンを制御するには、ユーティリティのあるディレクトリに移動します。

 $ cd ~/.pyenv
      
      





利用可能なバージョンを表示するには:

 $ git tag
      
      





バージョンを変更する

 $ git checkout <version>
      
      





更新する

 $ git pull
      
      







使用例


 ~ $ pyenv install 2.7.5 ~ $ pyenv install 3.3.2 ~ $ pyenv rehash ~ $ pyenv versions * system 2.7.5 3.3.2 ~ $ pyenv global 2.7.5 ~ $ python --version Python 2.7.5 ~ $ cd projects/ ~/projects $ pyenv local 3.3.2 ~/projects $ python --version Python 3.3.2 ~/projects $ cd test_prj/ ~/projects/test_prj $ python --version Python 3.3.2 ~/projects/test_prj $ cd .. ~/projects $ pyenv local --unset ~/projects $ python --version Python 2.7.5
      
      







すべてに加えて、すべてがプロジェクトの作者によってgithubのリポジトリーに非常に詳細に詳細に記述されています



仮想環境



すべて、そして好きなように。 3 番目の pythonブランチを使用する場合、 すぐに使用できる仮想環境を作成するvenvユーティリティを使用できます。 それについては Habr に関する記事があります。 virtualenvまたはそのvirtualenvwrapperラッパーに慣れている場合は、2つのオプションがあります。pyenvプラグインをインストールするか、使用しているpythonのバージョンで使用します。 したがって、最初のオプションを選択すると、作成した環境がPythonのバージョンに追加され、次のコマンドで使用できるようになります。

 $ pyenv versions
      
      





プラグインの追加は簡単で、 pyenv-virtualenvまたはpyenv-virtualenvwrapperリポジトリからクローンを作成するだけです:

 $ mkdir -p ~/.pyenv/plugins $ git clone git://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv $ git clone git://github.com/yyuu/pyenv-virtualenvwrapper.git ~/.pyenv/plugins/pyenv-virtualenvwrapper
      
      





使用例は、 pyenv-virtualenvおよびpyenv-virtualenvwrapperのドキュメントに記載されています。

すべて、そして好きなように使用します。



使用例


 $ pyenv versions * system 2.7.5 3.3.2 $ mkdir -p ~/test_project/prj_for_2.7.5 && cd ~/test_project/prj_for_2.7.5 $ pyenv virtualenv 2.7.5 my-virtualenv-2.7.5 $ pyenv local my-virtualenv-2.7.5 $ pip install django==1.4 $ pip freeze Django==1.4 wsgiref==0.1.2 $ python --version Python 2.7.5 $ mkdir -p ~/test_project/test_project && cd ~/test_project/test_project $ pyenv virtualenv 3.3.2 my-virtualenv-3.3.2 $ pyenv local my-virtualenv-3.3.2 $ pip install django==1.5 $ pip freeze Django==1.5 $ python --version Python 3.3.2
      
      





これで、プロジェクトディレクトリにいるので、アクションを実行せずに目的のバージョンのpythonからスクリプトを実行できます。 pyenvは、このプロジェクトに使用する環境とPythonのバージョンに関する情報を含む.python-versionファイルをディレクトリに作成します。



便利なリンク



github.com/utahta/pythonbrew

github.com/yyuu/pyenv

github.com/yyuu/pyenv-installer

github.com/yyuu/pyenv-virtualenv

github.com/yyuu/pyenv-virtualenvwrapper

docs.python.org/dev/library/venv.html

www.virtualenv.org/en/latest

virtualenvwrapper.readthedocs.org/en/latest



All Articles