当我使用python 3.3时,是否需要python包virtualenv?

时间:2012-10-19 09:38:39

标签: python virtualenv python-3.3

我正在查看Cristoph Gohlke's python packages,我注意到Python 3.3有一个包Virtualenv。

由于标准python库v3.3中有一个包 venv ,我想知道单独安装这个包是否有优势。

编辑:从两个软件包的文档virtualenv 1.8.2 venv 我可以说 venv 标准库包缺少以下功能:

  1. --no-site-packages选项
  2. 在setuptools之间进行选择或分发
  3. 无法安装pip,因为它在默认的python安装中不可用
  4. 在虚拟环境--prompt=PROMPT
  5. 内没有自定义提示前缀

    如果我无法发现任何其他差异,请在此处写下。

3 个答案:

答案 0 :(得分:24)

通常,使用python3.3或更高版本时不需要virtualenv包,因为它通过PEP 405合并到标准库中。正如您在问题中所述,最新版本的virtualenv与标准库中的venv包之间存在一些相对较小的差异。在某种程度上(例如--no-site-packages),这源于不同的实现。由于venv在标准库中,因此它不必跳过virtualenv为了创建自包含的python安装所做的一些扭曲的箍,例如复制python的大部分{ {1}}模块。

最好的资源是彻底阅读PEP。

答案 1 :(得分:2)

问题

stdlib中的venv是否需要python包virtualenv?

(或者有什么区别?)

  1. --no-site-packages是两者中的默认值。存在--system-site-packages选项,但it's broken
  2. distribute is deprecated ......这里没什么可看的
  3. 从Python3.4开始,ensurepip将在virtualenv中提供pip。要使其在Ubuntu / Debian上运行,请务必安装python3-venv
  4. 此处没有变化
  5. 当venv首次公布时,我希望它进入维护模式,为老蟒蛇提供错误修复" virtualenv"并且所有开发都将重点放在stdlib venv上。我不确定virtualenv的项目目标/路线图,但我担心我希望的事情没有发生。因此,至少在目前,我一直在使用原始的virtualenv。

答案 2 :(得分:1)

pyvenv 是为Python 3.3和3.4创建虚拟环境的推荐工具

从python 3.5开始使用:

python3 -m venv

venv 是一个可以访问python内部的内置模块

pyvenv 在3.6

中已弃用

来源:https://docs.python.org/3/library/venv.html