对不起,如果我听起来有点愚蠢。 我对此感到困惑: 两者之间有什么区别:
virtualenv myvenv
和
-m venv myvenv
第一个在创建虚拟环境时对我来说效果很好,而另一个则不然。
我cd
我的开发目录并使用virtualenv myvenv
,它创建了虚拟环境。但是如果我使用-m venv myvenv
,它只会给出错误。
venv是 Python 3 直接附带的软件包。所以你不需要pip install
任何东西。
相反,Virtualenv是一个独立的库,可在 https://virtualenv.pypa.io/en/stable/上使用,并且可以与pip
一起安装。
他们解决同样的问题,并以非常相似的方式工作。
如果您使用 python3,我建议避免任何"额外"依赖项,并坚持使用venv
。
你的错误可能是因为你使用了Python2/pip2。
我认为virtualenv文档对此进行了最好的解释:
venv
是自 Python 3.3 以来集成到标准库中的virtualenv
子集。该子集意味着只有部分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
很长时间了,从不需要替代品。