我使用VirtualBox手动设置和virtualenvs在我的本地机器上运行Django项目。最近我发现Vagrant并决定改用它,因为它看起来非常简单和实用。
但我无法想象 - 我还需要使用virtualenv Vagrant VM,是鼓励练习还是被禁止?
答案 0 :(得分:31)
作为Devin stated,只要您是该机器的唯一用户,就不必在部署到流浪汉机器时使用virtualenv
。但是,即使您不将其用于开发或部署,我仍然可以使用virtualenv
, setup.py 等。
在我(不那么)谦虚的意见中,任何Python项目都应该:
包含带有以下目标的 Makefile :
virtualenv
或virtualenv
pyvenv
和 requirements.txt 文件pip
setup.py develop
我们的想法是尽可能简化 Makefile 。应该设置依赖项,以便您可以克隆存储库(或提取源tarball)并运行setup.py test
。它应该创建一个虚拟环境,安装需求并运行单元测试。
您还可以在运行 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包,并且无法解决仍然与系统混合的原生扩展的情况。