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

Pri*_*owe 9 python virtualenv

对不起,如果我听起来有点愚蠢.我很困惑这两个
virtualenv myvenv

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

np8*_*np8 21

我认为virtualenv 文档对此解释得最好:

venvvirtualenv自 Python 3.3 以来集成到标准库中的子集。子集意味着只有部分virtualenv功能在venv

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

对我来说,差异非常微妙,唯一的实际差异venv是包含在标准库中(自 3.3 起)。我已经使用python -m venv venv了很长时间,从来不需要替代品。

  • Last part does feel like its not really valid? If i have x amount of python versions, i can still call any of those pythons directly with full paths and get a correct runtime paths for that particular interpreter. So, making a "venv" with that random python only requires that i know where that python is, say `~/localcopies/python/3.7.7/python -mvenv myproject` .. (3认同)
  • 是的,我同意。virtualenv 文档中的说明有点误导性。区别在于 python 版本的自动发现。我编辑了答案。 (3认同)

Cos*_*tin 16

venv是一个直接附带python 3的包.所以你不需要pip install任何东西.

virtualenv是一个独立的库,可在https://virtualenv.pypa.io/en/stable/获得,可以安装pip.

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

如果你使用python3我建议避免"额外"的依赖,并坚持下去 venv

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