/var/log

技術系のあれこれ。※内容は個人の発言であり、所属する組織を代表するものではありません。

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