Python3.7.中使用virtenv替代venv和virtualenv

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无法使用。

你可能感兴趣的:(Python)