2011-08-11 85 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

我試圖使用buildout自動化的東西看起來像這樣。 buidout應該安裝django,從hg repo複製我的django項目,並從奶酪店安裝其他依賴項。我如何去做這件事?我確實碰到過'djangorecipe'和'mercurialrecipe',但我不知道如何將所有這些放在一起 – Guruprasad

+0

通常,您可以使用checkout構建本身,因此您可以將'buildout.cfg'和'bootstrap.py'放入你的項目根。這樣,當有人檢查/克隆你的項目時,他們只是做引導/建立丹斯,他們正在運行。如果你有*多個*結賬,那麼看看'mr.developer'。 –

3

virtualenv有一個整潔的功能,在其中創建一個本身的副本與更多的鉤子。在你的情況下,重要的鉤子是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) 

並執行它。這將創建一個bootstrap.py文件,你的同伴必須執行的引導雙方的virtualenv和所需的軟件包:

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

的virtualenv中是在項目的根目錄創建的,所以一定要的svn:忽視或在的.gitignore在提交之前創建dirs。

這樣做的唯一缺點是AFAIK沒有與virtualenvwrapper集成。但無論如何,這是爲了在項目中擁有環境,而虛擬打包者之一就是讓環境適應您的家園。

+0

謝謝。似乎是那種適合我需要的東西。將嘗試一下並提供反饋。 :-) – Guruprasad