Edited at

同一システム上でPython複数環境の構築

More than 3 years have passed since last update.

Mac OSXには最初からPythonがインストールされていますが、同一システム上で、色んなシチュエーションでヴァージョンやパッケージを使い分けたいとなったときのやり方手順メモ。


  • 同一システム上で、複数ヴァージョンを使い分けたい。

  • プロジェクトごとにヴァージョン及びパッケージのセットを使い分けたい。

  • 使い分けたいが切り替えの手間を軽減したい。

  • 新しいパッケージやソフトを試す際に既存の環境を汚したくない。

といった要望をクリアすることを目標にします。Pythonにおけるヴァージョン管理システムは、pyenv、virtualenv、direnvなどがあります。評価できるほど経験がないのですが、pyenvにはvirtualenv機能のプラグインもあるので、pyenvで構築することにします。また個別にパッケージを管理するのも煩雑なのでAnacondaを利用することにします。


AnacondaはPythonの数値計算環境を構築するために様々なパッケージをまとめた無料のディストリビューションです。 インストールを行うことで、NumPy,SciPy,matplotlibはもちろん、機械学習ライブラリscikit-learn等のパッケージをインストールできます。

http://morimori2008.web.fc2.com/contents/PCprograming/python/pythonAnaconda.html


以下の構成を前提としています。

- OS: Mac OSX

- パッケージ管理システム : Homebrew

- Python自体のヴァージョン管理とパッケージ管理 : pyenv

- ライブラリパッケージ : Anaconda


Homebrewのインストール

Terminal.appを立ち上げて、以下のコマンドをコピペして実行します。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

以下Homebrewの機能を利用して、インストールなどしていきます。冒頭にbrewとあるコマンドがこの機能を利用したものです。


pyenvのインストール

Homebrewの仕組みを利用してpyenvをインストールします。

$ brew install pyenv


pyenv-virtualenvのインストール

Homebrewの仕組みを利用してpyenv-virtualenvをインストールします。

$ brew install pyenv-virtualenv


システムのシェルの起動スクリプトに、パスを通す

(bashの場合)bash_profileへpyenv関連のパスを通します。

viは操作がわかりづらいですが、Terminal.appから

$  open ~/.bash_profile 

と打つと、テキストエディタでbash_profileが開きますので、慣れた操作感でファイル編集ができます。以下のように記載します。

export PATH="$HOME/.pyenv/bin:$PATH"

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

設定を反映させるため、Terminal.appを再起動させるか、以下のコマンドを実行します。

$ source ~/.bash_profile


pyenvでインストールできるヴァージョンの確認

Terminal.appにて以下のコマンドで一覧を表示します。

$ pyenv install -l

こんな感じでリストされます。

Available versions:

2.1.3
2.2.3
...
...


環境構築の手順


  1. 必要なヴァージョンのPythonをダウンロード

  2. pyenv virtualenvコマンドでインストールヴァージョンにバージョン指定識別子をつける

  3. 特定のディレクトリ配下とバージョン指定識別子を関連づける

  4. 追加で必要なパッケージのインストールはglobalかlocal(バージョン指定識別子を利用)を指定して行う。


必要なヴァージョンのPythonをダウンロード

Anaconda(Python version2系統)をインストールする例

$ pyenv install anaconda-2.1.0

Anaconda(Python version3系統)をインストールする例

$ pyenv install anaconda3-2.1.0

Python version2系統をインストールする例

$ pyenv install 2.7.9

Python version3系統をインストールする例

$ pyenv install 3.4.2


pyenv virtualenvコマンドでインストールヴァージョンにバージョン指定識別子をつける

こんな感じで指定します。バージョン番号は正確に指定する必要がありますが、バージョン指定識別子は任意の名称を自作してください。

$ pyenv virtualenv バージョン番号 バージョン指定識別子

anaconda3-2.1.0を使って、condaanalyse1というバージョン指定識別子をつける場合はこうなります。

$ pyenv virtualenv anaconda3-2.1.0 condaanalyse1


特定のディレクトリとバージョン指定識別子を関連づける

1.特定ディレクトリ配下へ移動

$ cd specific_prj

2.ディレクトリとバージョン指定識別子を関連づけます

$ pyenv local condaanalyse1

3.このディレクトリ配下であれば指定したヴァージョンのPythonが自動的に選択されます。


pyenvの主なコマンド

$ pyenv install -l //インストール可能なバージョン一覧を表示

$ pyenv install <バージョン番号> //インストール
$ pyenv uninstall <バージョン番号> //アンインストール

$ pyenv version //現在のバージョンを表示
$ pyenv versions //インストール済みバージョン一覧を表示

$ pyenv local <バージョン番号> //カレントディレクトリーでのバージョン切替
$ pyenv global <バージョン番号> //システム全体でのバージョン切替


Anacondaが持つヴァージョン管理システムとの使い分け

Anacondaにもヴァージョン管理システム(conda)があります。penvはAnacondaを含む同一システム全体上でのヴァージョン管理、condaはAnacondaが提供するパッケージ内での管理と、管理のレイヤーが異なるので適宜使い分けます。