现在为某一个工程创建一个虚拟环境, 创建一个独立的Python运行环境,命名为pj_test (这是虚拟环境目录名,目录名可自行自定义)
[root@kevin-test ~]# cd /opt/
[root@kevin-test opt]# mkdir project_test
[root@kevin-test opt]# cd project_test
[root@kevin-test project_test]# virtualenv --no-site-packages pj_test
New python executable in /opt/project_test/pj_test/bin/python2
Also creating executable in /opt/project_test/pj_test/bin/python
Installing setuptools, pip, wheel...
done.
如上命令virtualenv就可以创建一个独立的Python运行环境,这里还加上了参数--no-site-packages (也可以不跟这个参数),这样已经安装到系统Python环境
中的所有第三方包都不会复制过来,于是就得到了一个不带任何第三方包的"干净"的Python运行环境。
上面命令将会在当前的目录中创建一个文件夹pj_test,这个文件夹包含一些Python执行文件,以及pip副本,用于安装其他的packges。
虚拟环境的名字(此例中是pj_test )可以是任意的;若省略名字将会把文件均放在当前目录。
[root@kevin-test project_test]# ls
pj_test
[root@kevin-test project_test]# ls pj_test/
bin include lib lib64
[root@kevin-test project_test]# yum install -y tree
[root@kevin-test project_test]# tree pj_test/bin
pj_test/bin
├── activate
├── activate.csh
├── activate.fish
├── activate.ps1
├── activate_this.py
├── easy_install
├── easy_install-2.7
├── pip
├── pip2
├── pip2.7
├── python -> python2
├── python2
├── python2.7 -> python2
├── python-config
└── wheel
[root@kevin-test project_test]# tree pj_test/include/
pj_test/include/
└── python2.7 -> /usr/include/python2.7
[root@kevin-test project_test]# tree pj_test/lib| head -3
pj_test/lib
└── python2.7
├── _abcoll.py -> /usr/lib64/python2.7/_abcoll.py
新建的Python环境被放到当前目录下的pj_test目录。有了pj_test这个Python环境,可以用source激活虚拟环境:
[root@kevin-test project_test]# pwd
/opt/project_test
[root@kevin-test project_test]# ls
pj_test
[root@kevin-test project_test]# cd pj_test/
[root@kevin-test pj_test]# source ./bin/activate
(pj_test) [root@kevin-test pj_test]# python -V
Python 2.7.5
激活虚拟环境, 在虚拟环境里, 任何使用pip安装的包将会放在 venv 文件夹中,与全局安装或其他应用的Python环境完全隔绝开。
如果创建虚拟环境时不选择指定的python版本, 那么虚拟环境创建后默认就是系统默认的python版本.
比如如果系统还有一个python3.6.1, 路径为: /usr/local/python3/bin/python3
[root@kevin-test pj_test]# /usr/local/python3/bin/python3 -V
Python 3.6.1
则创建虚拟机时选择指定的python版本
[root@kevin-test project_test]# virtualenv --no-site-packages -p /usr/local/python3/bin/python3.6.1 pj_test
[root@kevin-test project_test]# cd pj_test/
[root@kevin-test pj_test]# source ./bin/activate
(pj_test) [root@kevin-test pj_test]# python -V
Python 3.6.1
可以在服务器上提前安装多个版本的python环境, 不同版本的python的二进制路径不一样
然后在使用virtualenv创建各个项目的虚拟环境时指定不同的python版本, 这样各个项目python解释器环境就实现了��互隔离, 非常纯净!
使用"deactivate" 命令退出或停用虚拟环境:
[root@kevin-test project_test]# cd pj_test/
[root@kevin-test pj_test]# source ./bin/activate
(pj_test) [root@kevin-test pj_test]# python -V
Python 2.7.5
(pj_test) [root@kevin-test pj_test]# deactivate
[root@kevin-test pj_test]#
退出虚拟环境后, 此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。
退出虚拟环境后, 之前在虚拟环境里的部署的应用程序的使用都不会受到影响!
完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。
如果要删除一个虚拟环境, 只需删除它的虚拟目录即可, 比如要删除虚拟环境pj_test, 则:
[root@kevin-test pj_test]# rm -rf /opt/project_test/pj_test/
在虚拟环境安装 Python packages