こんにちは!4月から入社したYet Another Sakatoku、酒徳千尋です。今まで同じクラス、同じ職場に別の「酒徳さん」がいるのを経験したことがないので不思議な気分です。
ウノウでは新規サービスの開発を担当することになったのですが、言語やフレームワークの選択は開発者に任されているということなので、PythonとDjangoの組み合わせで開発を始めることにしました。
PythonでのWeb開発は、日本ではまだメジャーではないと思うので、このウノウラボでtipsや、ライブラリ・フレームワークの使い方を紹介できればと思います。
今回は、僕が入社してから最初に行ったPython開発環境のセットアップについて書いてみたいと思います。
virtual-pythonで開発環境をつくる
開発にあたって様々なライブラリをインストールする必要が出てきますが、通常のPythonのホームディレクトリ、例えば、/usr/lib/python2.4/site-packages/にライブラリを追加するには管理者権限が必要になります。また、ライブラリの追加、アップデートによって、他の開発者の環境に影響をあたえる恐れもあります。
こうした懸念を避けるには、virtual-pythonを使って、自分のホームディレクトリに自分専用のPython環境を作ってしまうのがもっとも手軽です。
virtual-python
http://peak.telecommunity.com/dist/virtual-python.py
$ curl -O http://peak.telecommunity.com/dist/virtual-python.py
$ python2.4 virtual-python.py
python2.3, python2.4, python2.5のように複数のバージョンのPythonがインストールされている環境では、使用するバージョンを指定して、virtual-pythonスクリプトを実行します。
実行後は、ホームディレクトリに、~/bin/python, ~/include/python2.4/, ~/lib/python2.4/が作られ、追加ライブラリは~/lib/python2.4/site-packages/にインストールされるようになります。
また、これ以降は、~/bin/pythonを使うようにしましょう。~/binにパスが通っていない場合は、.bashrcなり、.zshrcなりに適宜PATHを設定します。
sitecustomize.pyを設定する
まっさらなPython環境ができたので、つぎのこの環境全体の設定を行います。~/lib/python2.4/site-packagesにsitecustomize.pyというファイルを作成しておくと、Pyhonインタプリタ起動時に自動的に読み込まれ、Python全体の設定を行うことができます。
よくある設定には、デフォルト・エンコーディングの設定があります。
import sys
sys.setdefaultencoding('utf-8')
デフォルト・エンコーディングは好みと必要性に応じて設定してください。
easy_installをインストール
Pythonのライブラリのインストールには、easy_installというツールを使います。これはPHPでいうところのpear, Rubyでいうところのgemに相当します。
まず、このeasy_install自体をインストールする必要があるので、ブートストラップモジュールであるez_setup.pyを以下のURLからダウンロードし、実行します。
ez_setup.py
http://peak.telecommunity.com/dist/ez_setup.py
$ curl -O http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py
あとは、~/bin/easy_installを使って、パッケージの追加を行います。
easy_installの使い方
easy_installの基本的な使い方は、次のようになります。
$ easy_install (パッケージ名)
上記のコマンドを実行するとPython Packge Index, 通称Cheese shopにアクセスして、適切なパッケージを探し、見つかった場合はダウンロード、インストールが始まります。
例えば、noseというパッケージをインストールする場合は次のようになります。
$ easy_install nose
パッケージによっては、zip_safeというフラグを設定してあるため、インストールすると、zip形式でアーカイブされた拡張子eggのファイル、"Python Egg"としてインストールされるものもあります。これを抑止するには-Zオプションを使います。
$ easy_install -Z SQLAlchemy
パッケージ内のソースコードを参照したい場合などには、このオプションを使用してみてください。
ネットワークから直接インストールを行わない場合は、あらかじめtar.gz形式やegg形式でアーカイブされたパッケージをダウンロードしておいて、インストールすることもできます。
$ easy_install migrate-0.2.2.tar.gz
パッケージ管理・応用編
Subversionレポジトリからのインストール
Subversionをインストールしていると、Subversionレポジトリから直接ソースコードをチェックアウトしてパッケージをインストールすることができます。これは、開発版のライブラリを試してみたい時に便利です。
$ eazy_install http://pythonhatenatext.googlecode.com/svn/trunk/
pthを使ってインポート元を指定
あるライブラリの最新のリビジョンに追随していきた場合もあると思います。その場合は、Subversionやsvkで通常通りチェックアウトを行い、site-package内に、pthファイルを作って、インポートするディレクトリを指定します。
例えば、常に最新の開発版Djangoを使いたい場合は、次のように行います。
$ svn co http://code.djangoproject.com/svn/django/trunk/ django
$ cd django
$ pwd
/home/chihiro_sakatoku/src/django
$ pwd > ~/lib/python2.4/site-packages/django.pth
pthファイル内には、Pythonのインクルードパスに含めたいディレクトリを記述します。一つのpthファイルに何行もパスを追加しても構いませんが、通常は、django.pthにはDjangoのパスだけを、pylons.pthにはPylonsのパスだけを、と書くのが分かり易いと思います。
おすすめのライブラリ
最後にeasy_install経由でインストールできて、かつ「これは入れておけ!」というPythonライブラリを紹介します。
- cElementTree
- Python2.4以前ならば入れておきましょう。PythonでXMLを扱う場合は、これが標準です。Python2.5ではxml.etreeとして標準ライブラリに組み込まれているので、インストールする必要はありません。
- Paste
- 自分でパッケージを作るときに何かと役に立つユーティリティライブラリです。別の機会に使い方を紹介したいと思います。
- nose
- テストツールです。Pythonには標準ライブラリとしてdoctest, unittestというテストライブラリがありますが、noseはそれらと併用ができて、かつ、非常にテストも書きやすく、実行しやすいと感じています。
- SQLAlchemy
- 非常に優秀なオブジェクトリレーショナルマッパーです。アプリケーション内で実際に使わないとしても、入れておくと何かと便利です。
- Migrate
- Ruby on Railsのマイグレーション機能を模範にしたスキーマ管理ツールです。上記のSQLAlcheymyを使用しています。
また、easy_installには他にも様々なオプションがあるので、是非マニュアルも参照してみてください。
EasyInstallのマニュアル(英語)
http://peak.telecommunity.com/DevCenter/EasyInstall