创建虚拟环境(Python)中“virtualenv”和“-m venv”之间的区别是什么

时间:2017-05-20 23:49:14

标签: python virtualenv

对不起,如果我听起来有点愚蠢。 我对此感到困惑 这两者之间有什么区别      virtualenv myvenv

     -m venv myvenv
第一个适合我创建虚拟环境,而另一个不适合 我将CD放入我的开发目录并使用“ virtualenv myvenv ”并创建虚拟环境。但如果我使用“ -m venv myvenv ”,它只会出错。请帮我理解

2 个答案:

答案 0 :(得分:12)

venv 是直接附带python 3的软件包。所以你不需要pip install任何东西。

virtualenv https://virtualenv.pypa.io/en/stable/提供的独立库,可以pip安装。

他们解决同样的问题并以非常类似的方式工作。

如果您使用python3我建议避免“额外”依赖并坚持使用venv

您的错误可能是因为您使用的是Python2 / pip2

答案 1 :(得分:1)

我认为virtualenv docs最好地解释了这一点:

venvvirtualenv的子集,自Python 3.3起集成到标准库中。该子集意味着virtualenv的功能只有一部分在venv中:

  • venv可能较慢,因为它没有“ app-data种子方法”
  • venv仅通过升级Python版本进行升级,而virtualenv是使用pip更新的。
  • venv不可扩展
  • virtualenv具有更丰富的programmatic API(描述虚拟环境而不创建虚拟环境)。请参阅venv API here
  • venv不能自动发现任意安装的python版本,而virtualenv可以。这意味着,如果要使用PATH中第一个版本以外的其他python版本,则必须使用venv指定python可执行文件的完整路径。使用virtualenv,您只需提供版本号即可。请参阅virtualenv文档中的python discovery

对我来说,区别是非常细微的,唯一的实际区别是venv已包含在标准库中(自3.3开始)。我已经使用python -m venv venv很长时间了,从来不需要其他选择。