35

我正在查看Cristoph Gohlke 的 python 包,我注意到有一个用于 Python 3.3 的包 Virtualenv。

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

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

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

如果还有其他我无法发现的差异,请在此处写下。

4

3 回答 3

25

通常,使用 python3.3 或更高版本时不需要 virtualenv 包,因为它是通过PEP 405合并到标准库中的。正如您在问题中指出的那样,最新版本的 virtualenv 和标准库中的 venv 包之间存在一些相对较小的差异。部分(例如--no-site-packages)这源于不同的实现。由于venv在标准库中,它不必跳过一些扭曲的箍virtualenv来创建一个独立的 python 安装,例如复制 python 的大部分site模块。

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

于 2012-12-31T03:00:41.537 回答
2

对于这个问题

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

(或者有什么区别?)

  1. --no-site-packages是两者的默认值。该--system-site-packages选项存在,但已损坏
  2. 不推荐使用分发...这里没什么可看的
  3. 从 Python3.4 开始,ensurepip 将在 virtualenv 中提供 pip。要让它在 Ubuntu/Debian 上运行,请务必安装该python3-venv软件包
  4. 这里没有变化

当 venv 首次发布时,我希望它进入维护模式,为“旧 python 的 virtualenv”提供错误修复,所有开发都将重点转移到 stdlib venv。我不确定 virtualenv 的项目目标/路线图,但我担心我希望的事情不会发生。所以,至少目前,我会继续使用原来的 virtualenv。

于 2015-09-14T14:56:27.560 回答
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

于 2017-03-18T08:46:12.023 回答