【问题标题】:Is python package virtualenv necessary when I use python 3.3?使用 python 3.3 时是否需要 python 包 virtualenv?
【发布时间】:2012-10-09 21:39:27
【问题描述】:

我在查看Cristoph Gohlke's python packages,发现有一个适用于 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内没有自定义提示前缀

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

【问题讨论】:

    标签: python virtualenv python-3.3


    【解决方案1】:

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

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

    【讨论】:

    • 由于venv在标准库中,所以不用跳过一些扭曲的箍(...) venv是纯Python包,没有与任何第三方纯 Python 包(如 virtualenv)相比,对 Python 任何部分的任何特殊访问。
    • 见 Brett Cannon 在 PyCon13 pyvideo.org/video/1730/python-33-trust-me-its-better-than-27 演讲的第 14 分钟。他说,“因为它现在直接集成到 python 中,你可能习惯遇到的许多边缘情况现在都消失了,因为它是直接支持的东西”。
    【解决方案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. 这里没有变化

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

    【讨论】:

      【解决方案3】:

      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

      【讨论】:

        猜你喜欢
        • 2016-01-07
        • 2016-09-05
        • 1970-01-01
        • 2015-12-21
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多