プロジェクト・ブートストラッピング

ファイルシステムのレイアウト

注釈

このドキュメントは Unix-スタイル にかなり偏っているので、他のオペレーティングシステム上で同じ事をやるには少し余計に頑張りが必要とするかも知れません。

Virtualenv は Python projects に必須です。 これは異なる Python 環境を独立させる方法を提供します。 我々は慣例的に本番サイトを /opt/webapps/<site_name> で、開発用サイトを ~/webapps/<site_name> でホストします。 それぞれのプロジェクトは個別に、それぞれの virtualenv を取得し、それはプロジェクトに関連付けられた全てのソースファイルの含んだディレクトリとしても提供されます。 我々は virtualenv に必要なパッケージを追加するのに pip を使います。

ブートストラップ・プロセスは次のようになります:

cd /opt/webapps
virtualenv mysite.com
cd mysite.com
source bin/activate
pip install -r path/to/requirements.txt

ちなみに

より快適な作業のために、 virtualenvwrapper を使うのも良いでしょう。これは複数の virtualenv での作業に便利なヘルパーを提供しています。

パッケージング

成功する開発の鍵の 1 つは、あなたが開発するソフトウェアを、あなたがデプロイするソフトウェアとできるだけ近くにするべきである、ということです。 Pip は複数のマシンをまたいで Python のプロジェクトを堅実にデプロイできる、シンプルで何度も繰り返せる方法を提供します。 サードパーティ・ライブラリを必須とする全てのアプリケーションは requirements.txt と呼ばれる pip requirements file を含むべきです。 プロジェクトはアプリケーションに必須なファイル、さらに必要に応じて追加で必須になるファイルを集合させておくべきです。

何をあなたの必須ファイルに含めるか

つまり、全部です。あなたのオペレーティングシステムが Python パッケージ群を提供するであろう間は、最近は pip によりおよそ全てがクリーンにインストールされます。 あなたの virtualenv に全てがインストールされることで、環境が独立されて、システムパッケージにバージョンのコンフリクトが起きることを防ぎます。

警告

依存関係を押さえておいてください! Pip は VCS からのインストールを簡単にします。そうすれば、PyPI 上で見つかるどのバージョンも取ってくるだけで済みます。またこうすることで、不測の事態を起こすような異なるライブラリの異なるバージョンを含んだデプロイが簡単になります。 VCS でのチェックアウトのために、 PyPI ライブラリ群のバージョン、または、コミット/タグをしっかりと特定しておいてください。 例: django==1.4.1 または -e git+https://github.com/toastdriven/django-tastypie.git@v0.9.9#egg=django-tastypie