对不起,如果我听起来有点愚蠢。
我对此感到困惑
这两者之间有什么区别
virtualenv myvenv
和
-m venv myvenv
第一个适合我创建虚拟环境,而另一个不适合
我将CD放入我的开发目录并使用“ virtualenv myvenv ”并创建虚拟环境。但如果我使用“ -m venv myvenv ”,它只会出错。请帮我理解
答案 0 :(得分:12)
venv 是直接附带python 3的软件包。所以你不需要pip install
任何东西。
virtualenv 是https://virtualenv.pypa.io/en/stable/提供的独立库,可以pip
安装。
他们解决同样的问题并以非常类似的方式工作。
如果您使用python3我建议避免“额外”依赖并坚持使用venv
您的错误可能是因为您使用的是Python2 / pip2
答案 1 :(得分:1)
我认为virtualenv docs最好地解释了这一点:
venv
是virtualenv
的子集,自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
很长时间了,从来不需要其他选择。