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

Gil*_*tes 22 python django virtual-machine virtualenv vagrant

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

D.S*_*ley 31

正如Devin所说,virtualenv只要您是机器的唯一用户,就不必在部署到流浪机时使用.但是,即使您不使用它进行开发或部署,我仍然可以使用a virtualenv,setup.py等.

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

  1. 包括.cvsignore,.gitignore,.hgignore,...文件,忽略常见的Python中间文件和virtualenv目录.
  2. 一个requirements.txt文件,以pip兼容格式列出所需的包
  3. 包含具有以下目标的Makefile:

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

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

您还可以在运行vagrant的Makefile中包含Vagrantfilevagrant目标.当你在它时,添加到维护者清理目标.vagrant destroy

这使得您的项目可以被任何使用流浪者或没有它的人开发.如果(何时)您需要在流浪者或物理环境中与其他项目一起使用部署,包括干净的setup.py和描述最小环境的Vagrant文​​件,则可以轻松安装到虚拟环境或共享流浪者计算机中.

  • 你能举一个这样的项目的例子吗? (3认同)

Dev*_*rre 12

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

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

  • 不,您可以使用一个框 - 一个框只是VM的模板.我的意思是,如果多个项目使用相同的目录,并且该目录是一个流浪者环境,那么项目就不会相互隔离. (3认同)

fam*_*kin 9

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

请注意,virtualenv仍然只能用于纯Python包,并且不能解决仍然与系统混合的本机扩展的情况.