Python之virtualenv实现多应用多版本环境隔离

我们现在系统里已经有了两个常用版本的python来满足不同应用的需求,分别的是python2.7.5python3.6.1,但是我们现在又有不同的多个应用,都要用到这两套环境,每个应用有不同的依赖包,我们直接使用系统级的这两个环境来跑程序有两个弊端:

  1. 当两个应用需要用到同一个版本python,同一个依赖包,但是依赖包版本却不一样的,这时候没办法解决。
  2. 多个应用的依赖包都装到同一个环境中,非常不方便管理。

有什么好的办法使每个应用都有独立的互不干扰的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)

可见,已经达到我们需要的目的。

Python之virtualenv实现多应用多版本环境隔离

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll to top