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
...
...
環境構築の手順
- 必要なヴァージョンのPythonをダウンロード
- pyenv virtualenvコマンドでインストールヴァージョンにバージョン指定識別子をつける
- 特定のディレクトリ配下とバージョン指定識別子を関連づける
- 追加で必要なパッケージのインストールは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が提供するパッケージ内での管理と、管理のレイヤーが異なるので適宜使い分けます。