Python は高機能で安定したプログラム言語ですが、本格的に開発するには環境を適切に設定しなければいけません。
ここではPython の開発環境構築手順を記述します。
内容はMac OS X 10.7 Lion でテストしています。
基本部分は他のプラットフォームでも利用できるように配慮していますが、主にMac向けです。
目次
Python のインストール
Python は 2.x系と 3.x系のバージョンが存在します。
Mac は Leopard では 2.5.1、Snow Leopard では 2.5.5、2.6.1、Lion では2.5.5、2.6.6、2.7.1 が最初からインストールされています。そのまま利用するのが最も楽です。
自分でインストールする場合は 2.x 系の最新版である 2.7.2 をインストールするのが良いです。
3.x 系は最新である分サードパーティ製のライブリの動作がまだ完全とは言えません。
2.7.2 のバイナリやソースコードは以下から取得できます。
http://www.python.org/download/releases/2.7.2/
初期インストールされているバージョンと後でとインストールしたバイナリはインストール場所が違いますので、上書きされることはありません。
ライブラリ管理
Python は標準のまま利用しても問題ありませんが、大量のライブラリが提供されていますので、それを管理するツールを入れておきます。
easy_install
以前はこれしかツールがありませんでした。
Python は 2.5 以上には setuptools はインストール済みですが easy_install コマンドがインストールされていない場合があります。
Mac OS X 10.5 以上では 初期インストール済みですが、インストールされていない環境では以下のようにインストールします。
curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
virtualenv
ライブラリ類をインストールする前に virtualenv にて環境切り替えを可能にしておきます。
sudo pip install virtualenv
sudo pip install virtualenvwrapper
virtualenv --no-site-packages -p /usr/local/bin/python ~/local
これで「~/local/bin」にパスを通すと個別環境を動作させることが可能です。
文字コード関連
ソースコードを記述する際の文字コードは UTF-8 で作成するのが無難です。
良く sitecustomize.py で設定する説明がありますが、設定しない方が良いです。sitecustomize.py を設定してしまうと他者に配布した時動作しないことがあります。
配布前提プログラムや他者に説明するサンプルプログラムを sitecustomize.py を UTF-8 前提で作成してはいけません。cp932の人もいますし、EUC-JPの人だっているのですから。
コード毎に文字コードのプログラムをちゃんとした方が良いでしょう。
他者の不備コードを動作させる時に仕方なく sitecustomize.py を設定する場合はグローバルな設定をしないで個別対処するのが良いです。
個別に設定するならば動作させたいプログラムと同じディレクトリの中に sitecustomize.py を作成して、不備コードの方にその sitecustomize.py を reload させるプログラムを追加するのが良いでしょう。
import sys
sys.setdefaultencoding('utf-8')
以下が reload するコード。
import sys,os
try:
import sitecustomize
if sys.version_info[0] >= 3:
from imp import reload
reload(sitecustomize)
except ImportError: pass
全体で設定するような手抜きをしていると後でこまります。
参考に文字コード系外部ライブラリ
補完の設定
ターミナル内での補完設定をします。
Mac OS X では libedit がインストールされ GNU Readline はインストールされてません。
GNU Readline の方が慣れていることや Leopard の libedit をテストすると hisotory関連の値がずれたりするので GNU Readline を MacPorts でインストールします。
加えてreadline ライブラリを pip でインストールします。
sudo port install readline
pip install readline
ファイル名や置く場所はどこでも良いですが、ここでは「.pythonrc.py」の名前でホームディレクトリ直下に作成します。
HISTORYFILE="/Users/ユーザ名/var/pythonhistory"
try:
import rlcompleter, readline
readline.parse_and_bind("tab: complete")
# GNU Readlineをインストールしたくない場合は上の行を
# コメントアウトして下の行をコメントはずしてください
#readline.parse_and_bind ("bind ^I rl_complete")
readline.parse_and_bind("set input-meta on")
readline.parse_and_bind("set convert-meta off")
readline.parse_and_bind("set output-meta on")
try:
f = open(HISTORYFILE, "a")
f.close()
readline.read_history_file(HISTORYFILE)
except IOError:
pass
try:
import atexit
atexit.register(lambda: readline.write_history_file(HISTORYFILE))
except:
pass
except:
pass
上のファイルを作成したら .zshrc に以下を追加します。
export PYTHONSTARTUP="/Users/ユーザ/.pythonrc.py"
これで Python の中でタブで補完が効きます。
ライブラリ類のインストール
便利なライブラリがありますのでインストールします。
Pygments
pip install Pygments
docutils の directives を追加します。
sudo cp external/rst-directive.py /Library/Python/2.7/site-packages/docutils/parsers/rst/directives
sudo vi /Library/Python/2.7/site-packages/docutils/parsers/rst/directives/__init__.py
__init__.py の以下を編集します。
'restructuredtext-test-directive': ('misc', 'TestDirective'),}
となっている所を
'restructuredtext-test-directive': ('misc', 'TestDirective'),
'sourcecode':('rst-directive', 'pygments_directive'),}
に変更。
PIL(Python Imaging Library)
http://www.pythonware.com/products/pil/
PIL はいくつかのライブラリに依存しています。
freetype2 ライブラリは以下のコマンドで存在を確認できます。
locate libfreetype.dylib
結果に /Developer/SDKs/MacOSX10.7.sdk/usr/X11/lib/libfreetype.dylib が含まれていれば大丈夫です。存在しない場合は X11 をインストールしてください。
jpeg ライブラリは自力でコンパイルするか MacPorts 等でインストールする必要があります。
MacPorts でインストールする場合は以下になります。
sudo port install libjpeg
自力でコンパイルする場合は http://www.ijg.org/ から jpegライブラリのソースコードを取得してコンパイルします。
tar xvfz jpegsrc.v7.tar.gz
cd jpeg-7
./configure --enable-shared --enable-static
make
make test
sudo make install
で /usr/local 以下にインストールされます。
setup.py を編集します。
freetype と jpeg ライブラリのパスを変更します。
#FREETYPE_ROOT = None
FREETYPE_ROOT = libinclude("/Developer/SDKs/MacOSX10.7.sdk/usr/X11/")
#JPEG_ROOT = None
JPEG_ROOT = libinclude("/usr/local") # パスは自分の環境に合せてください
コンパイル時のオプションを変更します。
from distutils import sysconfig
from distutils.core import Extension, setup
from distutils.command.build_ext import build_ext
# この行の直下あたりに以下を追加
OrigExtension = Extension
# fink を利用している場合は '-arch', 'ppc', '-arch', 'ppc64' を削除しておくほうが無難かも
def Extension(*args, **kwargs):
extra_args = ['-arch', 'ppc', '-arch', 'ppc64', '-arch', 'i386', '-arch', 'x86_64']
kwargs['extra_compile_args'] = extra_args + kwargs.get('extra_compile_args', [])
kwargs['extra_link_args'] = extra_args + kwargs.get('extra_link_args', [])
return OrigExtension(*args, **kwargs)
上記の編集をしたらコンパイル、インストールします。
sudo python setup.py install
補足:/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources 以下に画像関連のライブラリが存在するのですがPILコンパイル時認識はしない模様。
PyObjC
http://pyobjc.sourceforge.net/
easy_installでインストールします。パッケージが分割されているので注意。
pip install pyobjc
pip install pyobjc-framework-DictionaryServices
これでインストールされます。
Pythonをソースコードからコンパイルする
独自でコンパイルする場合は以下のような方法でコンパイルできます。
Mac OS X
curl -O http://www.python.org/ftp/python/2.6.3/Python-2.6.3.tar.bz2
tar xvfj Python-2.6.3.tar.bz2
cd Python-2.6.3
unset DYLD_LIBRARY_PATH
unset LD_LIBRARY_PATH
./configure --enable-framework --enable-universalsdk=/ MACOSX_DEPLOYMENT_TARGET=10.5 --with-universal-archs=all --with-readline-dir=/usr/local --with-threads --with-gcc=gcc-4.0 CC=gcc-4.0 CXX=g++-4.0
make
sudo make frameworkinstall
上記でインストールすると以下のパスに Python がインストールされます。
/Library/Frameworks/Python.framework/Versions/2.6/
/usr/local/bin/python
パスを通しておいてください。
Python の対応アーキテクチャは以下のコマンドで調べることができます。Snow Leopard を利用している人は 64bit バイナリが含まれることを確認しておく方がよいでしょう。
file /Library/Frameworks/Python.framework/Versions/2.6/Python
変更履歴
- 2012-01-28: モジュールのインストール を pip に統一
- 2011-10-23: Lion と Python2.7に関する記述を追加
- 2009-10-07: Snow Leopard と Python2.6.3に関する記述を追加
- 2009-07-22: 公開
以下はゲストコメント可能です。名前とメールアドレスは任意の物を入力していただいてかまいません。 blog comments powered by Disqus