OSX(Mavericks) 上に homebrew + pyenv で Python 開発環境を構築する

2年前に買ったMacbook Airを初めて再インストールしました。初めてのMacでよくわからないまま色々なパッケージを入れまくっていたこともあってグチャグチャの環境になっていました。再インストールして出直しです。

スポンサーリンク




Python環境構築

image

OSはMavericksをUSBメモリからインストールしました。 以前は、 http://www.python.org から最新Releaseをインストールしていました。が、どうやら最近は homebrew ( http://brew.sh/ ) を使うのがおしゃれなようです。公式ページの「Homebrewのインストール」を忠実に実行。

image

Xcodeはインストール済みの状態です。

$ ruby -e “$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)”

最後に、brew doctor してよって言われてたので実行してみます。

$ brew doctor
Your system is ready to brew.
$

なんだか良さそうな気がします。

さて、ここからPython開発環境の構築です。今回は pyenv を使って2.7系と3系の環境を共存させたいと思います。再インストール前は、VirtualBox 上に Ubuntu やら FreeBSD を入れて仮想環境毎に切り替えて使ってましたが、今回は出来る限りホスト側というかローカルで開発できる環境を整えたいと考えています。 google 先生やら会社の達人から pyenv を使えとご神託を受けたので pyenv に挑戦です。

$ brew update
$ brew install pyenv

インストールできるPythonのバージョンをリスト表示してみます。

$ pyenv install --list
Available versions:
  2.1.3
  ・・・
  2.7.6
  2.7.7
  3.0.1
  ・・・
  3.4.0
  3.4.1
  anaconda-1.4.0
  anaconda-1.5.0
  ・・・
  pypy-1.5
  pypy-1.5-src
  pypy-1.6
  pypy-1.7
  ・・・
  stackless-3.3.5
  stackless-dev

まずは、2.7.7 をインストールします。

$ pyenv install 2.7.7
Downloading readline-6.3.tar.gz...
-> http://ftpmirror.gnu.org/readline/readline-6.3.tar.gz
Installing readline-6.3...
Installed readline-6.3 to /Users/moto/.pyenv/versions/2.7.7

Downloading Python-2.7.7.tgz...
-> http://yyuu.github.io/pythons/7f49c0a6705ad89d925181e27d0aaa025ee4731ce0de64776c722216c3e66c42
Installing Python-2.7.7...
ERROR: The Python zlib extension was not compiled. Missing the zlib?

Please consult to the Wiki page to fix the problem.
https://github.com/yyuu/pyenv/wiki/Common-build-problems

BUILD FAILED

失敗しました。”ERROR: The Python zlib extension was not compiled. Missing the zlib?” zlib が見つからないみたいです。 https://github.com/yyuu/pyenv/wiki/Common-build-problems を見ろ!ということみたいなので確認してみます。 You could try this: と指示されてる通りに再チャレンジです。

$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install -v 2.7.7
・・・
Installed Python-2.7.7 to /Users/****/.pyenv/versions/2.7.7

今度は無事成功です。 CFLAGSで、コンパイルオプションを指定してるようです。何をしているか確認してみます。

$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
$ cd `xcrun --show-sdk-path`/usr/include/
$ ls zlib*
zlib.h

最初のエラーは zlib が Missing と言われてました。Xcode の include のパスを引数で指定することで zlib を見えるようにしているみたいです。 同様に 3.4.1 もインストールします。

$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install -v 3.4.1
・・・
Installed Python-3.4.1 to /Users/moto/.pyenv/versions/3.4.1

これで、この環境には Mavericks に標準でインストールされている 2.7.5 と pyenv で $HOME/.pyenv にインストールされた 2.7.7、3.4.1 が共存することになりました。 普段はOS標準の 2.7.5 を利用し、バージョン固定の場合は開発ツール単位にバージョンを切り替えて利用します。私は、shell は zsh を利用しているので .zshrc に以下を追加します。

if which pyenv > /dev/null; then
    export PYENV_ROOT="${HOME}/.pyenv"
    export PATH=${PYENV_ROOT}/shims:${PATH}
    eval "$(pyenv init -)";
fi

.zshrc を読み込んで準備完了です。pyenv local x.x.x を使ってカレントディレクトリのpython のバージョンを切り替えてみます。

$ mkdir /tmp/test
$ cd /tmp/test
$ python --version
Python 2.7.5
$ pyenv local 2.7.7
$ cat .python-version
2.7.7
$ python --version
Python 2.7.7
$ pyenv local 3.4.1
$ python --version
Python 3.4.1
$ pyenv local --unset
$ python --version
Python 2.7.5
$ ls -a
./	../
$

.python-version を読み込んで使用する Python を切り替えているみたいです。 以上、無事 Python 開発環境が準備できました。

[amazonjs asin=”4048686291″ locale=”JP” title=”エキスパートPythonプログラミング”]

スポンサーリンク







  • このエントリーをはてなブックマークに追加