マシンを交換したので久しぶりにPython環境を構築してたら色々つまずいたのでメモ。
参考ページ
http://d.hatena.ne.jp/nakamura001/20111129/1322579170
http://www.sicafe.net/macPackageManageTips/html/homebrewPythonInstall.html
http://yono.hatenablog.jp/entry/20100923/1285235346
http://mzmttks.blogspot.jp/2011/12/python-site-packagesdist-packages.html
http://hello-hello-world.blogspot.jp/2011/09/pythonsite-packages.html
Macには標準でPythonがインストールされています。
しかし、開発環境を構築する時には標準の環境を汚したくなかったり、別のバージョンのPythonが必要だったりするので別にインストールする事も多いのです。
しかし、中途半端なセットアップを行うとライブラリのインストールで意図しないうちにライブラリのインストール先が混じってしまい、インストールしたはずのパッケージが行方不明なんて事になったりします。
easy_install は元から入っている
/usr/bin/easy_install
にあるけど pip は公式インストーラーから入れたので
/usr/local/bin/pip
だったりするわけです。さらにPythonが /opt 以下だったりするとさらにカオス。
例えば標準の python の site_packages は以下になりますが
/Library/Python/2.7/site-packages
MacPortsでインストールした python だと以下になります。
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
まぁ基本的に virtualenv 内のみで使ってれば問題は出ないんですが。
MacPortsでインストールしたPythonを標準にする
ここらへんはpython特有の歴史的な問題も絡むので細かい話は置いておいて、MacPortsを使ってPython用の環境を作る場合です。
-
まずはpython本体
$ sudo port install python27
1. 次にeasy_install。なぜかsetuptoolsの方はselectに対応してないので easy_install はインストール先のpythonに合わせて easy_install-2.7 みたいなコマンドを使います。
```bash
$ sudo port install py27-setuptools
ここでエラーになる場合エラーログにも出てきますが以下のコマンドで直ります。ちなみに私の場合は公式のget_pip.pyをportでいれたpythonで実行後の環境だと発生しました。
```bash
sudo port -f activate py27-distribute
```
-
次に pip もportで入れます。select で標準の pip を切り替え。
$ sudo port install py27-pip
$ sudo port select --set pip pip27
1. virtualenv関係。
```bash
$ sudo port install py27-virtualenv py27-virtualenvwrapper
$ sudo port select --set virtualenv virtualenv27
$ echo -e "\n# virtualenv\nexport WORKON_HOME=\$HOME/.virtualenvs\nsource `which virtualenvwrapper.sh-2.7`\n" >> ~/.bashrc
virtualenvはselectで切り替えを。virtualenvwrapperはselect無いので注意。
パスの調べ方
python の参照しているパスを調べる方法
python -c "import site; print(site.getsitepackages())"
distributeの参照先
python -c "import distutils.sysconfig as s; print(s.get_python_lib())"