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集成。但無論如何,這是爲了在項目中擁有環境,而虛擬打包者之一就是讓環境適應您的家園。
小心接受答案? :-) –
我試圖使用buildout自動化的東西看起來像這樣。 buidout應該安裝django,從hg repo複製我的django項目,並從奶酪店安裝其他依賴項。我如何去做這件事?我確實碰到過'djangorecipe'和'mercurialrecipe',但我不知道如何將所有這些放在一起 – Guruprasad
通常,您可以使用checkout構建本身,因此您可以將'buildout.cfg'和'bootstrap.py'放入你的項目根。這樣,當有人檢查/克隆你的項目時,他們只是做引導/建立丹斯,他們正在運行。如果你有*多個*結賬,那麼看看'mr.developer'。 –