我们现在系统里已经有了两个常用版本的 python
来满足不同应用的需求,分别的是 python2.7.5
和 python3.6.1
,但是我们现在又有不同的多个应用,都要用到这两套环境,每个应用有不同的依赖包,我们直接使用系统级的这两个环境来跑程序有两个弊端:
- 当两个应用需要用到同一个版本
python
,同一个依赖包,但是依赖包版本却不一样的,这时候没办法解决。 - 多个应用的依赖包都装到同一个环境中,非常不方便管理。
有什么好的办法使每个应用都有独立的互不干扰的python以及独立的依赖包呢?我们来使用 virtualenv
实现。
安装virtualenv
pip install virtualenv
创建环境
在需要的项目目录下创建独立运行环境 env
,这里注意,你需要创建的虚拟环境是需要你系统中已经安装的,比如我在 /usr/bin/python2.7
有一个系统自带的 python2.7
,使用 -p
指向。
cd /opt/projects/test
virtualenv -p /usr/bin/python2.7 env
我们就得到了一个不带任何第三方包的“干净”的 Python2.7
运行环境l了。
可以看到在目录下创建了一个 env
的子目录,新建的Python环境就在这个目录下。
[root@localhost test]# ls
env run.py
如果需要一个 Python3
的环境呢?修改 -p
参数后后面的路径指向你需要的版本的执行文件就好了:
virtualenv -p /usr/local/python3/bin/python3.6 env
这样就可以得到 python3
的环境。
使用
进入环境:
[root@localhost test]# source env/bin/activate
(env) [root@localhost test]#
可以看到前面多了一个 env
,这样就可以为项目安装所需的包了,这时候用 pip install
的包会被安装在 env
这个目录下,其他 Python
不受影响。
退出
要退出当前环境,使用:
deactivate
删除
删除只需要删除环境对应的文件夹即可,很方便了。
rm -rf ./env
这样,通过简单的配置,我们就可以为不同的项目提供不同的 Python
版本,安装不同的依赖包而互不影响。
验证
我们查看下版本:
[root@localhost test]# source env/bin/activate
(env) [root@localhost test]# python -V
Python 3.6.1
(env) [root@localhost test]# pip -V
pip 19.3.1 from /opt/projects/test/env/lib/python3.6/site-packages/pip (python 3.6)
(env) [root@localhost test]# deactivate
[root@localhost test]# python -V
Python 2.7.5
[root@localhost test]# pip -V
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
可见,已经达到我们需要的目的。