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实现多应用多版本环境隔离

原文链接:https://beltxman.com/2912.html

若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。

Scroll to top