Virtualenv和源版本控制

时间:2012-03-06 15:11:50

标签: python django mercurial virtualenv

我最近开始了一个Django项目,我很快意识到virtualenv真的很有用,原因很多。我设置了virtualenv和我的项目,但现在我想知道我应该添加到源代码控件的文件(在我的例子中,Mercurial)。我应该在venv文件夹下添加所有文件吗?如何确保同事可以克隆并立即开始工作而不必再次设置env?

2 个答案:

答案 0 :(得分:87)

您生成一个与项目一起提交的“需求”文件(通常为requirements.txt):

pip freeze > requirements.txt

然后,每个开发人员将设置自己的virtualenv并运行:

pip install -r requirements.txt

答案 1 :(得分:6)

当你进行python / django开发时,所有这些环境麻烦都很常见!我解决了所有这些问题,并测试了一些解决方案!我测试的东西:

  1. 项目运行本地
  2. 在virtualenv中运行的项目
  3. 在VM中运行的项目
  4. 项目在VM中运行,使用vagrant
  5. 我找到的最佳解决方案是#4!因为我以前工作的公司,团队中的每个人都有不同的操作系统,所有类型的windows,mac和linux,并为每个环境安装所有依赖项需要时间!所以我们决定尝试virtualenv,这真的很棒!但仍然每个人都必须建立自己的环境。 virtualenv中的问题是所有python源都在你创建的环境中!所以我不会将这些文件推送到源版本控件! 最好的解决方案是#4,因为这正是我所需要的,Vagrant使用Chef来设置你的环境,所以你只需要编写一些食谱,并让流浪者为你运行它们!然后你将这些食谱推送到SCM,然后当下一个人从SCM获取文件并重新加载VM时,所有依赖项将自动安装!

    我有一篇博客文章解释了有关该主题的更多内容以及我创建的a Django Blank project in github,因此您可以使用vagrant获得项目的起点。

    http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/(链接不再有效,因此链接到Wayback Machine)

    修改

    Chris Pratt的解决方案也是一个很好的解决方案,但是有些库在所有操作系统中都不是那么简单,例如,许多Mac用户在想要安装MySQLdb-python时遇到问题。这是一个非常普通的图书馆,但是如果团队中的每个人都不得不花时间解决这个问题,那就不好了!