2011-08-11 30 views
3

私はDjangoプロジェクトで友人と仕事をしています。このプロジェクトはいくつかのPythonモジュールに依存しています。私はdjangoとそれらの追加の依存関係をvirtualenvの中にインストールしています。 djangoプロジェクトのコードは、チェックアウト/クローンしてコードを投稿できるすべての友達がアクセスできるリポジトリにあります。しかし、私の友人のコンピュータの開発環境にある設定を複製する方法、つまり、すべての追加の依存関係をインストールし、環境を展開できる状態にする方法はありますか?Django開発環境の複製/複製

私はzc.buildoutについて聞いたことがあります。あまりにも深く進むことなくちょうどそれを見ました。それは複雑に見えます。これを達成する他の方法はありますか?私の友人が使っている開発環境はGNU/LinuxからMS Windowsまで様々です。

答えて

3

buildout.cfg:

[buildout] 
parts = python 

[python] 
recipe = zc.recipe.egg 
eggs = 
    your 
    egg 
    dependencies 
    here 
interpreter = python 

bootstrap.pyを取得します。次に:

$ python bootstrap.py 
$ bin/buildout 
$ bin/python ... 
+0

答えを受け入れるケア? :-) –

+0

ビルドアウトを使用して自動化しようとしていることは、このように見えます。 buidoutはdjangoをインストールし、hg repoから私のdjangoプロジェクトをクローンし、チーズショップから他の依存関係をインストールする必要があります。これをどうやって行うのですか?私は 'djangorecipe'と 'mercurialrecipe'に出くわしましたが、それらを一緒にまとめる方法はありません。 – Guruprasad

+0

一般に、あなたはビルドアウト自体をチェックアウトするので、 'buildout.cfg'と' bootstrap.py'をあなたのプロジェクトのルート。そうすれば、誰かがあなたのプロジェクトをチェックアウト/クローン作成するときに、彼らは単にブートストラップ/ビルドアウトを行うだけで、彼らは稼動しています。 *複数のチェックアウトがある場合は、 'mr.developer 'を調べてください。 –

3

virtualenvには、2つ以上のフックを持つ自分自身のコピーを作成するきれいな機能があります。あなたの場合、重要なフックはafter_installです。これはvirtualenvのインストール直後に実行されます。

ただ、次の内容のスクリプトを作成します。

import os, virtualenv 

extra_text = """ 
import os, subprocess 
def after_install(options, home_dir): 
    subprocess.call([ 
     os.path.join(home_dir, 'bin', 'pip'), 
     'install', 
     '-r', 
     'relative_path_from_env_home_to_requirements_file', 
    ]) 

def adjust_options(options, args): 
    if not args: args.append('.') 
""" 

output = virtualenv.create_bootstrap_script(extra_text) 
open('bootstrap.py', 'w').write(output) 

そして、それを実行します。 virtualenvのは、プロジェクトのルートに作成されたので、svnのようにしてくださいされ

./bootstrap.py --no-site-packages 

:無視するか.gitignoreそれはあなたの仲間はvirtualenvのと必要なパッケージの両方をブートストラップするために実行する必要がありbootstrap.pyファイルを作成します。コミットする前に作成されたディレクトリ。

これの唯一の欠点は、AFAIKはvirtualenvwrapperと統合されていないことです。しかし、とにかくこれの存在理由はプロジェクトに環境を持たせることであり、virtualenvwrapperの環境はあなたのホームディレクターに環境を持たせることです。

+0

ありがとう。私のニーズに合ったものに見えます。これを試してフィードバックを与えます。 :-) – Guruprasad