在开发Python应用程序时,系统默认的Python版本可能会不兼容这个应用程序, 如果同时开发多个应用程序, 可能会用到好几个版本的python环境, 这种情况下,每个应用可能需要各自拥有一套"独立"的Python运行环境。virtualenv就是用来为一个应用创建一套"隔离"的Python运行环境的工具。virtualenv是python的一个虚拟化环境工具,用来建立一个虚拟的python环境,一个专属于项目的python环境, 用virtualenv 来保持一个干净的环境非常有用, 可以帮助我们在同一台host上创建多套纯净的python解释器环境并实现相互隔离,各个环境下安装的库仅限于自己的环境,不会影响到别人。
动态语言Ruby、Python都有自己的虚拟环境,虚拟环境是程序执行时的独立执行环境,在同一台服务器中可以创建不同的虚拟环境供不同的系统使用,项目之间的运行环境保持独立性而相互不受影响。例如项目A在基于Python2的环境中运行,而项目B可以在基于Python3的环境中运行。Python通virtualenv工具管理虚拟环境。
简而言之, Virtualenv是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。Virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够帮助:
- 在没有权限的情况下安装新套件;
- 不同应用可以使用不同的套件版本;
- 套件升级不影响其他应用。
- 隔离项目之间的第三方包依赖
- 在没有权限的情况下安装新的Python软件包
- 还有一个额外的好处:部署应用时,把开发环境的虚拟环境打包到生产环境即可。
virtualenv 安装
[root@kevin-test ~]# cat /etc/RedHat-release (本文是在CentOS7下操作并验证无误)
CentOS Linux release 7.5.1804 (Core)
[root@kevin-test ~]# python -V
Python 2.7.5
[root@kevin-test ~]# pip -V
-bash: pip: command not found
先来安装pip
[root@kevin-test ~]# yum -y install epel-release
[root@kevin-test ~]# yum install python-pip
[root@kevin-test ~]# pip install --upgrade pip
[root@kevin-test ~]# pip -V
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
通过pip安装virtualenv
[root@kevin-test ~]# pip install virtualenv
Collecting virtualenv
Downloading https://files.pythonhosted.org/packages/7c/17/9b7b6cddfd255388b58c61e25b091047f6814183e1d63741c8df8dcd65a2/virtualenv-16.1.0-py2.py3-none-any.whl (1.9MB)
100% |████████████████████████████████| 1.9MB 1.3MB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.1.0
测试安装后virtualenv的版本
[root@kevin-test ~]# virtualenv --version
16.1.0
查看帮助
[root@kevin-test ~]# virtualenv --help
Usage: virtualenv [OPTIONS] DEST_DIR
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-v, --verbose Increase verbosity.
-q, --quiet Decrease verbosity.
-p PYTHON_EXE, --python=PYTHON_EXE
The Python interpreter to use, e.g.,
--python=python3.5 will use the python3.5 interpreter
to create the new environment. The default is the
interpreter that virtualenv was installed with
(/usr/bin/python2)
--clear Clear out the non-root install and start from scratch.
--no-site-packages DEPRECATED. Retained only for backward compatibility.
Not having access to global site-packages is now the
default behavior.
--system-site-packages
Give the virtual environment access to the global
site-packages.
--always-copy Always copy files rather than symlinking.
--relocatable Make an EXISTING virtualenv environment relocatable.
This fixes up scripts and makes all .pth files
relative.
--no-setuptools Do not install setuptools in the new virtualenv.
--no-pip Do not install pip in the new virtualenv.
--no-wheel Do not install wheel in the new virtualenv.
--extra-search-dir=DIR
Directory to look for setuptools/pip distributions in.
This option can be used multiple times.
--download Download preinstalled packages from PyPI.
--no-download, --never-download
Do not download preinstalled packages from PyPI.
--prompt=PROMPT Provides an alternative prompt prefix for this
environment.
--setuptools DEPRECATED. Retained only for backward compatibility.
This option has no effect.
--distribute DEPRECATED. Retained only for backward compatibility.
This option has no effect.
--unzip-setuptools DEPRECATED. Retained only for backward compatibility.
This option has no effect.
virtualenv 使用