我需要virtualenv吗?

时间:2012-02-23 10:02:57

标签: python virtualenv

对于每个项目和每个阶段(dev,prod,...),我使用不同的linux用户。我可以使用pip和--user选项在$ HOME中安装包。

我的孤立环境来自不同的Linux用户。

我可以从virtualenv获得哪些好处?到目前为止,我认为没有理由使用virtualenv。但也许我错过了一些东西。

Linux用户名的构建方式如下:project_name_S和S是阶段(dev,qual,prod,testing)。每个阶段都可以在不同的主机上。

更新

在提出这个问题三年多之后:我现在使用virtualenv。 user-environment是错误的。也许现在有更好的支持。但是没有什么可以阻止你在$ HOME中创建virtualenv: - )

3 个答案:

答案 0 :(得分:3)

创建virtualenv比创建新用户更快更容易。我不打算推​​荐现有项目的转换,但考虑新项目。

答案 1 :(得分:3)

Virtualenv非常适合管理依赖项。配置文件(或设置文件)非常适合管理环境之间的变量差异。 (例如db location e.tc)

蟒蛇搭便车指南非常好,值得20分钟阅读。 http://docs.python-guide.org/en/latest/index.html

请参阅有关虚拟环境的此部分。

http://docs.python-guide.org/en/latest/dev/virtualenvs/

如果你只想使用不同的home或env模式变量,你可以在运行python代码之前设置它。

 PROD_MODE=PROD python example.py
然后

example.py会查找PROD_MODE变量。

import os
print os.environ['PROD_MODE']

那么你需要一个virtualenv吗?

我强烈推荐它。所以你有Django工作,你已经导入了一些其他库(我也强烈推荐pip),一切都在你的机器上工作。您的路径已设置,您的代码可以使用PATH和PYTHON_PATH解析为代码。辉煌!

现在你来部署在另一台机器上(可能是aws,一台linux服务器或类似机器)或者其他开发人员想要帮助你的项目代码。他们如何确保机器上的环境设置与您的相同,以及如何确保使用相同的env进行部署,并测试了所有新的代码? virtualenv为您做到这一点!您只需在新机器上移植或重新创建虚拟环境,任何一切都可以像测试/构建一样工作。

简而言之,虚拟环境可帮助您确保在发布/部署代码时记住所有导入,安装和路径设置时不会感到头疼。

答案 2 :(得分:1)

你使用virtualenv获得的一些你没有得到用户或家庭计划的东西:

  1. 能够使用不同版本的软件包 - 例如,django stable和django dev用于不同的站点,而不会污染系统范围的Python安装(或用户的python安装)。

  2. 能够冻结包需求并轻松复制运行环境。您可以使用备用安装方案执行此操作,但您将非常受限于您可以执行的操作(就要安装的软件包而言),您必须手动跟踪您的需求文件。

  3. 一般情况下,我建议您重新访问virtualenv以进行下一个项目。