python環境の移行
- 環境
- 本体:本体:MBP 15-inch, Mid 2009
- OS:Mac OS X Lion(10.7.2)
Macにデフォルトではいっているpythonで開発することに限界を感じはじめたので
作業の裏で少しずつ環境を移行していこうと思います.
限界といってもpygameを使う事を前提に考えるとちょっと...というのが本音.
僕程度の用途だと別にそれ以外の面では困った事にはならないのですが
参考にしたのは下記のサイト.
homebrewを実行したあとにpythonのインストールを実施しました.
brew install python
これで下記のようなシンボリックリンクがはられます.
/usr/local/bin/python -> ../Cellar/python/2.7.2/bin/python
この python が呼び出されるように.bash_profileなどで環境変数を設定してあげます.
やり方は色々あると思いますので詳細は割愛しますが,ざっくり以下の設定でいいと思います.
export PATH=/usr/local/bin:$PATH
これでpythonそのものはインストールできたのですが
サードパーティ製のパッケージをインストルするあたりが若干うるさいことになっています.
(easy_install とか pip の話です)
実はeasy_installはインストールしたpythonの環境毎に別途しれっとインストールされています.
homebrewでインストールした時には下記のフォルダに入ってます.
/usr/local/share/python/easy_install-2.7 /usr/local/share/python/easy_install
必要に応じて下記の通りシンボリックリンクを張っておくなりしておけば大丈夫です.
ln -s /usr/local/share/python/easy_install /usr/local/bin/easy_install ln -s /usr/local/share/python/easy_install-2.7 /usr/local/bin/easy_install-2.7
これで準備完了かと思いきや意外な所に落とし穴がありました...
easy_install の先頭のpythonの呼び出しの設定の箇所が下記のようになっています.
#!/usr/bin/python
私の環境だとこれでは別のpythonが呼び出されてしまいますので
別途,下記の通り変更しました.
#!/usr/bin/env python
これで環境変数上呼び出されているpythonの環境でeasy_installが動くようになります.
(`which python`したときのpythonが使われます)
あとは,easy_install 使って下記のようにpipをインストールしてあげて
easy_installの時と同じようにパスを通したり,先頭行の設定を修正してあげれば
純粋なhomebrew環境のpythonが動くようになります.
easy_install pip
試しに便利そうな/使いそうなサードパーティ製ツールをインストールしました.
(ちなみにpygameについては以前の記事を参照してください)
pip install mercurial pip install pep8 pip install pyflakes pip install virtualenv pip install virtualenvwrapper pip install PIL easy_install pygame pip install MySQL-python pip install pymysql pip install numpys
ただ相変わらずmatplotlibが正攻法でインストールできなかった...
しょうがないのでソースからインストール
(アンインストールする時とかどうしたらいいのやら...手作業ですか)
git clone https://github.com/matplotlib/matplotlib.git cd matplotlib python setup.py build python setup.py install
あとはこれにあわせて EclipseのPydevの環境設定を変更しないとなー
(余談)
matplotlibをpipでインストールしようとするとどうも下記のようなエラーがでました.
原因はhomebrewで入っているTkinterっぽいです.
詳しくは調べてないですが...同じような現象に見舞われた方はソースコンパイル等で対応すると早いです.
Traceback (most recent call last): File "<string>", line 14, in <module> File "/Users/nullhacker/build/matplotlib/setup.py", line 162, in <module> if check_for_tk() or (options['build_tkagg'] is True): File "setupext.py", line 832, in check_for_tk (Tkinter.__version__.split()[-2], Tkinter.TkVersion, Tkinter.TclVersion)) IndexError: list index out of range