venv + virtualenv = virtenv
- venv的升级版virtenv
- Python API
- Command line API
- venv什么情况下使用
venv的升级版virtenv
Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv
我在Python3.7.2上没有安装venv,但是找到了virtenv:virtenv通过一个简单的脚本封装了venv和virtualenv的创建。如果可能,始终使用venv;否则用virtualenv(除非指定)向下兼容。
此文件可以用作独立脚本,也可以用作要导入的模块。https://pypi.org/project/virtenv/
Python API
create(python, env_dir, virtualenv_py, system, prompt)
- 【python】: Python可执行文件的绝对路径。非空、且不匹配sys.executable, that interpreter is launched as a subprocess to run this script. Otherwise, the creation is done in-process (subprocesses may still be run in steps during the creation).
- env_dir points to the directory to create the new virtual environment
- system specifies whether system site packages will be available for the created virtual environment.
- prompt specifies the prompt prefix used in the created virtual environment’s activate scripts.
- virtualenv_py should be an absolute path pointing to a virtualenv.py script. This is optional; if missing, virtualenv will not be used to create a virtual environment.
Command line API
virtenv env_dir --python PYTHON [--system] [--prompt PROMPT]
参数类似Python API
The python argument is required, and can be a version, such as 3.7. A suitable Python executable will be looked up automatically if possible.
venv什么情况下使用
如上所述,venv在可用的情况下优先使用。virtualenv在以下情形使用:
- 目标Python的venv模块不可用时
- 目标Python的ensurepip模块不可用时。一般发生在Python 3.3或者一些不太绑定ensurepip的版本,如Debian。没有ensurepip模块,pip也就不可用了
- sys.real_prefix 设置了。这一般表示目标Python被virtualenv管理,且venv无法使用。