zowのプログラムな日々

日々のプログラミングとか

Mac(Yosemite)でPython開発環境を構築する

Macには標準でPython入ってるけども、いい加減Python3な時代になってもいいのでPython環境を構築する。

内容はrbenvとほぼ一緒。

pyenv-virtualenvのインストール

Homebrewが入ってる状態で以下を実行

$ brew update
$ brew install pyenv-virtualenv

パスを通す。

以下を.bash_profileに追記

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

追記したら再読み込みしておく。

$ . ~/.bash_profile

Pythonのインストール

pyenvからインストールできるpythonバージョンを確認

$ pyenv install -l
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  ...

  3.2.3
  3.2.4
  3.2.5
  3.2.6
  3.3.0
  3.3-dev
  3.3.1
  3.3.2
  3.3.3
  3.3.4
  3.3.5
  3.3.6
  3.4.0
  3.4-dev
  3.4.1
  3.4.2
  3.5-dev
  anaconda-1.4.0
  anaconda-1.5.0
  ...

3.4系最新の3.4.2をここではインストールする。

$ pyenv install 3.4.2

ここで以下のエラーが出たら

ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

xcodeコマンドラインツールをインストールするとインストール出来るようになる。

$ xcode-select --install

Pythonバージョン切り替え

インストールが終わったらバージョンを切り替える。

まずは現在のバージョンを確認

$ python -V
Python 2.7.6

Mac標準の2.7.6が選択されている。

これをインストールした物に切り替える。

現在インストールされているpythonを確認

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

Mac標準の物が使われているので「system」の前に「*」が付いている。

これをインストールした3.4.2に変更する。

$ pyenv global 3.4.2
$ python -V
Python 3.4.2
$ pyenv versions
  system
* 3.4.2 (set by /Users/zow/.pyenv/version)
$ 

変更できていることを確認して以下を実行する。

$ pyenv rehash

これで完了。

ちなみにMac純正に戻したい時は以下の様に「system」に変更してやれば良い。

$ pyenv global system
$ python -V
Python 2.7.6
$ pyenv versions
* system (set by /Users/zow/.pyenv/version)
  3.4.2
$ pyenv rehash

virtualenvの使い方

pyenvはpythonのバージョンを選択することができる物だけど、pythonの場合、pyenv以前から使われていた「virtualenv」という物がある。

この「virtualenv」を使うと、作るプログラムに合わせて同じバージョンのpythonで違った環境を利用することができる。

使い方は簡単。

$ pyenv virtualenv 3.4.2 3.4.2-test

とかやると、3.4.2の別環境が作れる。

$ pyenv versions
  system
* 3.4.2 (set by /Users/zow/.pyenv/version)
  3.4.2-test
$

作った環境はpyenvの方にも反映されているので、あとはこれを切り替えて使うだけ。

作った環境を削除する場合は

$ pyenv uninstall 3.4.2-test
pyenv: remove /Users/zow/.pyenv/versions/3.4.2-test? y
$ pyenv versions
  system
* 3.4.2 (set by /Users/zow/.pyenv/version)
$ 

pyenvで入れたバージョンを消すのと同じやり方で消せる。