我最近开始了一个Django项目,并很快意识到,由于多种原因,virtualenv真的很有用。我设置了virtualenv和我的项目,但是现在我想知道应该将哪个文件添加到源代码管理(在我的情况下是Mercurial)。我应该在venv文件夹下添加所有文件吗?如何确保同事可以克隆并立即开始工作而无需再次设置环境?
我最近开始了一个Django项目,并很快意识到,由于多种原因,virtualenv真的很有用。我设置了virtualenv和我的项目,但是现在我想知道应该将哪个文件添加到源代码管理(在我的情况下是Mercurial)。我应该在venv文件夹下添加所有文件吗?如何确保同事可以克隆并立即开始工作而无需再次设置环境?
Answers:
在进行python / django开发时,所有这些环境麻烦都是常见的!我经历了所有这些问题,并测试了一些解决方案!我测试过的东西:
我发现的最佳解决方案是#4!因为我曾经工作过的公司,所以团队中的每个人都有不同的操作系统,各种Windows,Mac和Linux,并且为每种环境安装所有依赖项都需要时间!因此,我们决定尝试virtualenv,这真的很好!但每个人仍然必须设置自己的环境。virtualenv中的问题是所有python源都在您创建的环境中!因此,我不会将这些文件推送到源版本控制!最好的解决方案是#4,因为这正是我所需要的,Vagrant使用Chef来设置您的环境,因此您只需要编写一些食谱,然后让vagrant为您运行!然后,您将这些配方推送到SCM,然后当下一个人从SCM获取文件并重新加载VM时,所有依赖项将自动安装!
我有一篇博客文章,解释了有关该主题的更多信息以及我创建的内容 在github中了一个Django Blank项目,因此您可以使用vagrant获得该项目的起点。
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/(链接不再有效,因此链接到Wayback Machine)
编辑
克里斯·普拉特(Chris Pratt)的解决方案也是一个很好的解决方案,但是某些库并不是在所有操作系统上都安装起来那么简单,例如,许多Mac上的人在想要安装MySQLdb-python时会遇到问题。这是一个非常普通的库,但是如果团队中的每个人都必须花时间解决这个问题,那根本不好!
MySQLdb-python
这是使用完整环境的一个很好的理由,但是也不能通过pip / requirements.txt完成吗?
~/path/to/virtualenv/bin/pip freeze > ~/path/to/repo/requirements.txt
。其他开发者需要设置自己的virtualenv,但它的字面两个命令- ,。virtualenv ~/path/to/env
~/path/to/env/bin/pip install -r ~/path/to/requirements.txt