virtualenv简介
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip
安装到Python3的site-packages
目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?
这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
virtualenv安装
[root@localhost ~]# pip install virtualenv
Collecting virtualenv
Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
100% |████████████████████████████████| 1.8MB 67kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
virtualenv运行使用
1. 创建虚拟化运行环境
[root@localhost ~]# virtualenv venv
New python executable in /root/venv/bin/python
Installing setuptools, pip, wheel...done.
[root@localhost ~]# ll
total 18312
-rw-------. 1 root root 3335 Oct 28 2015 anaconda-ks.cfg
-rw-r--r--. 1 root root 39343 Oct 28 2015 install.log
-rw-r--r--. 1 root root 9154 Oct 28 2015 install.log.syslog
-rw-r--r--. 1 root root 1591240 Aug 28 20:17 master
drwxr-xr-x. 18 1000 1000 4096 Aug 28 07:49 Python-2.7.13
-rw-r--r--. 1 root root 17076672 Dec 17 2016 Python-2.7.13.tgz
drwxr-xr-x. 9 root root 4096 Aug 28 20:24 ssdb-master
drwxr-xr-x. 5 root root 4096 Aug 29 00:06 venv
运行virtualenv venv命令之后,会在当前目录下创建一个名为venv的文件目录,该目录文件就是新创建的python虚拟运行环境,在创建过程中,他会将之前在真实python运行环境下安装的库复制到当前创建的新虚拟环境中。
创建干净的Python虚拟环境
如果希望创建一个空的python虚拟环境,可以使用如下命令:
virtualenv --no-site-packages venv
加上了参数--no-site-packages
,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
为新创建的Python环境指明Python解释器
在运行virtualenv venv命令时,同样没有指明希望运行在虚拟环境中的python版本信息,默认使用了机器中安装完成的python2.7.13版本。如果希望在创建环境时,指明一个python解释器来创建,使用如下命令:
virtualenv -p /usr/bin/python2.7 venv
2. 启动Python虚拟环境
2.1 激活虚拟化环境命令
新建的Python环境被放到当前目录下的venv
目录。有了venv
这个Python环境,可以用source
进入该环境:
source venv/bin/activate
注意到命令提示符变了,有个(venv)
前缀,表示当前环境是一个名为venv
的Python环境。在该虚拟环境下,可以正常安装各种第三方包,并运行python命令,这里尝试在虚拟环境下安装Flask:
[root@localhost ~]# source venv/bin/activate
(venv) [root@localhost ~]# pip install flask
Collecting flask
Downloading Flask-0.12.2-py2.py3-none-any.whl (83kB)
100% |████████████████████████████████| 92kB 259kB/s
Collecting itsdangerous>=0.21 (from flask)
Downloading itsdangerous-0.24.tar.gz (46kB)
100% |████████████████████████████████| 51kB 1.5MB/s
Collecting Werkzeug>=0.7 (from flask)
Downloading Werkzeug-0.12.2-py2.py3-none-any.whl (312kB)
100% |████████████████████████████████| 317kB 559kB/s
Collecting Jinja2>=2.4 (from flask)
Downloading Jinja2-2.9.6-py2.py3-none-any.whl (340kB)
100% |████████████████████████████████| 348kB 871kB/s
Collecting click>=2.0 (from flask)
Downloading click-6.7-py2.py3-none-any.whl (71kB)
100% |████████████████████████████████| 71kB 1.0MB/s
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->flask)
Downloading MarkupSafe-1.0.tar.gz
Building wheels for collected packages: itsdangerous, MarkupSafe
Running setup.py bdist_wheel for itsdangerous ... done
Stored in directory: /root/.cache/pip/wheels/fc/a8/66/24d655233c757e178d45dea2de22a04c6d92766abfb741129a
Running setup.py bdist_wheel for MarkupSafe ... done
Stored in directory: /root/.cache/pip/wheels/88/a7/30/e39a54a87bcbe25308fa3ca64e8ddc75d9b3e5afa21ee32d57
Successfully built itsdangerous MarkupSafe
Installing collected packages: itsdangerous, Werkzeug, MarkupSafe, Jinja2, click, flask
Successfully installed Jinja2-2.9.6 MarkupSafe-1.0 Werkzeug-0.12.2 click-6.7 flask-0.12.2 itsdangerous-0.24
安装成功。注意:在venv
环境下,用pip
安装的包都被安装到venv
这个环境下,系统Python环境不受任何影响。
2.2 退出当前系统环境
在虚拟环境中,输入:
deactivate
即可退出当前的venv虚拟化环境。