Python Django和VirtualEnv开发/部署最佳实践
只是好奇人们是如何结合virtualenv部署他们的Django项目的Python Django和VirtualEnv开发/部署最佳实践,python,django,git,virtualenv,Python,Django,Git,Virtualenv,只是好奇人们是如何结合virtualenv部署他们的Django项目的 更具体地说,您如何使生产virtualenv与开发机器正确同步 我使用git for scm,但git repo中没有我的virtualenv—我应该使用pip冻结,然后使用冻结输出在服务器上重新创建环境吗?(如果您这样做,您能描述一下这些步骤吗?我发现关于解冻过程的好文档很少-类似于pip安装-r freeze_output.txt可能吗?我使用这个bootstrap.py: 需要的是一个名为“requirements
- 更具体地说,您如何使生产virtualenv与开发机器正确同步
pip安装-r freeze_output.txt
可能吗?我使用这个bootstrap.py:
需要的是一个名为“requirements”的目录,看起来像这样:
这里有一个apps.txt、一个libs.txt(apps.txt包括其中——我只是想让django应用程序与其他python模块分开)和一个src目录,其中包含实际的tarball
当运行./bootstrap.py时,它会创建virtualenv(如果存在,则删除上一个),并将从requirements/apps.txt到它的所有内容都安装进去。否则,我不会在virtualenv中安装任何东西。如果我想包含一个新库,我将tarball放入requirements/src/,在其中一个文本文件中添加一行,然后重新运行./bootstrap.py
bootstrap.py和需求被检查到版本控制中(也是pip.py的副本,所以我甚至不必在任何地方安装它)。虚拟电视本身不是。每次推送到生产服务器上时,推送到生产服务器上的脚本都会运行./bootstrap.py。(bootstrap.py也做了一些努力,以确保它坚持使用Python2.5,因为这是我们在生产服务器(UbuntuHardy)和我的开发机器(UbuntuKarmic)上使用的,如果你不小心的话,默认为Python2.6)我只是在工作中使用pip、Fabric和git设置了类似的东西。流程基本上是这样的,大量借鉴了:
SHA\u
1d02afc
,它是这个特定版本中该文件的SHA1d02afc
的目录,将创建一个新的virtualenv,并使用pip install-E/path/to/venv/1d02afc-r/path/to/requirements.txt进行安装
git archive 1d02afc
或其他任何工具,我可以保证在远程机器上安装正确的软件包
我走这条路线是因为我真的不想让额外的virtuenv在发行版之间没有改变的情况下到处浮动。我也不喜欢将我所依赖的实际软件包放在自己的源代码树中。此答案中的链接已断开。请你纠正一下好吗?