我是否需要使用带有Vagrant的virtualenv?

时间:2013-08-16 10:09:33

标签: python django virtual-machine virtualenv vagrant

我使用VirtualBox手动设置和virtualenvs在我的本地机器上运行Django项目。最近我发现Vagrant并决定改用它,因为它看起来非常简单和实用。
但我无法想象 - 我还需要使用virtualenv Vagrant VM,是鼓励练习还是被禁止?

3 个答案:

答案 0 :(得分:31)

作为Devin stated,只要您是该机器的唯一用户,就不必在部署到流浪汉机器时使用virtualenv。但是,即使您不将其用于开发或部署,我仍然可以使用virtualenv setup.py 等。

在我(不那么)谦虚的意见中,任何Python项目都应该:

  1. 包含 .cvsignore .gitignore .hgignore ,...文件,忽略常见的Python中间文件以及{ {1}}目录。
  2. pip-compliant格式列出所需软件包的 requirements.txt 文件
  3. 包含带有以下目标的 Makefile

    • 环境:使用virtualenvvirtualenv
    • 创建虚拟环境
    • 要求:使用pyvenv requirements.txt 文件
    • 安装所需的软件包
    • 开发:使用虚拟环境
    • 运行pip
    • 测试:运行setup.py develop
    • 清理:删除中间文件,覆盖率报告等
    • maintainer-clean :删除虚拟环境

    我们的想法是尽可能简化 Makefile 。应该设置依赖项,以便您可以克隆存储库(或提取源tarball)并运行setup.py test。它应该创建一个虚拟环境,安装需求并运行单元测试。

  4. 您还可以在运行 vagrant up 的Makefile中包含 Vagrantfile vagrant 目标。当你在它的时候,在 maintainer-clean 目标中添加make test

    这使得任何使用流浪者或没有流浪者的人都可以使用您的项目。如果(何时)您需要在流浪者或物理环境中与其他项目一起使用部署,包括干净的 setup.py 和描述您的最小环境的 Vagrantfile ,这将使其变得简单安装到虚拟环境或共享的流浪汉机器。

答案 1 :(得分:12)

如果你为每个项目运行一个vagrant VM,那么没有直接的理由使用virtualenv。

如果其他贡献者不使用vagrant,但确实使用virtualenv,那么你可能想要使用它并支持它以使他们的生活更轻松。

答案 2 :(得分:9)

Virtualenv和其他形式的隔离(Docker,专用VM,......)不一定是互斥的。即使在隔离的环境中,使用virtualenv仍然是一个好主意,以保护虚拟系统Python不受项目包的影响。 * nix系统使用过多的基于Python的实用程序,这些实用程序依赖于系统Python中可用的特定版本的软件包,你不想搞砸它们。

请注意,virtualenv仍然只能用于纯Python包,并且无法解决仍然与系统混合的原生扩展的情况。