[[ともっくす alloc] init]

ともっくすの雑多な日記と技術的なメモ

macでpyenvの環境を整えたい

しばらく前にmacを新調したけど、開発環境を全然構築してなかったので、重い腰を上げてやってみる。

これまでは、pythonの開発環境を切り替えるのにvirtualenvを使ってきた。
Pythonの仮想環境 virtualenvとvirtualenvwrapper - [[ともっくす alloc] init]

でも、いろいろ調べてたら、pyenvの方が良いっぽい。

事前準備

pyenvのインストール

Homebrewでpyenvをインストール

$ brew install pyenv

それが成功したら、以下を.zshrc(.bashrc)に追記。

export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
fi

pyenv-virtualenvのインストール

Homebrewでpyenv-virtualenvをインストール
pyenv-virtualenvはpyenvのプラグインで、pyenv内でvirtualenvが使えるような感じ。

$ brew install pyenv-virtualenv

各バージョンのpythonを準備

インストールできるpython

インストール可能なpythonのバージョン等の確認は以下の通り。

$ pyenv install -l

python2系や3系、jython、pypyなどたくさんあるのが分かる。

インストールされているpython

現在インストールされているpythonのバージョンや環境などを確認する。

$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)

systemっていうのが、元からインストールされてるpython

pythonのインストール

インストール可能なpythonのバージョンから、必要なバージョンを選び、インストールする。

$ pyenv install 2.7.8

もし、これでBUILD FAILEDって出る場合は、とりあえず、以下を実行

$ xcode-select --install

これで、おそらくインストールできるはず。

確認してみる。

$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)
  2.7.8

ちゃんとインストールできてる。

環境を構築

デフォルトの環境を構築する

特に指定しない場合に使う環境を構築する。
環境名はdefaultで、pythonのバージョンは2.7.8にしてみる。

$ pyenv virtualenv --distribute 2.7.8 default

確認してみる。

$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)
  2.7.8
  default
$ python -V
Python 2.7.5

ちゃんと、defaultという環境ができている。
バージョンは2.7.5になっている。

これを、デフォルトの環境にする。

pyenv global default

確認してみる。

$ pyenv versions
  system
  2.7.8
* default (set by /Users/xxx/.pyenv/version)
$ python -V
Python 2.7.8

ちゃんと、バージョンが2.7.8になっている。

ディレクトリ毎に環境を変える

pyenv-virtualenvなら、ディレクトリ毎に環境を自動で切り替えることができる。
virtualenvwrapperとか使って、workonとか毎回する必要はない。
flaskを使ったプロジェクトのために、env-flaskという環境を使ってみる。

$ mkdir FlaskProject
$ cd FlaskProject
$ pyenv versions
  system
  2.7.8
* default (set by /Users/xxx/.pyenv/version)
$ pyenv virtualenv --distribute 2.7.8 env-flask
$ pyenv local env-flask
$ pyenv versions
  system
  2.7.8
  default
* env-flask (set by /Users/xxx/FlaskProject/.python-version)
$ pip install flask

これで、FlaskProjectというディレクトリ内では、env-flaskという環境が使われ、それ以外ではデフォルトの環境が使われる。
これは、ワーキングディレクトリを移動することで、自動で切り替わる。便利!
もちろん、pipでflaskをインストールしているが、これは、env-flaskにだけインストールされており、defaultにはインストールされていない。便利!