linux下python项目开发独立环境之virturlenv及virtualenvwraper
在使用 Python
开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。
这里,就要隆重介绍 virtualenv
,一个可以帮助我们管理不同 Python
环境的绝好工具。virtualenv
可以在系统中建立多个不同并且相互不干扰的虚拟环境。
安装virtualenv
在开发Python
应用程序的时候,系统安装的Python3
只有一个版本:3.6。所有第三方的包都会被pip
安装到Python3
的site-packages
目录下。
如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python
,就是安装在系统的Python 3
。如果应用A需要jinja 2.7
,而应用B需要jinja 2.6
怎么办?
这种情况下,每个应用可能需要各自拥有一套“独立”的Python
运行环境。virtualenv
就是用来为一个应用创建一套“隔离”的Python
运行环境。
virtualenv
原理
将系统Python
复制一份到virtualenv
的环境,用命令source venv/bin/activate
进入一个virtualenv
环境时,virtualenv
会修改相关环境变量,让命令python
和pip
均指向当前的virtualenv
环境。
使用pip
安装virtualenv
包
1 | pip3 install virtualenv |
创建虚拟运行环境
1 | # 创建python虚拟环境目录 |
运行虚拟环境
运行py2
虚拟环境
1 | # 读取进入python2独立虚拟环境 |
1 | # 查看py2虚拟环境中pyhon版本 |
1 | # 查看py2虚拟环境中python位置和pip位置 |
运行py3
虚拟环境
1 | # 读取进入python3独立虚拟环境 |
1 | # 查看py3虚拟环境中pyhon版本 |
1 | # 查看py3虚拟环境中python位置和pip位置 |
安装django
1 | # py2环境安装django |
创建django
项目
1 | # 进入网站目录 |
运行django
1 | # py2环境下运行py2网站项目 |
查看结果
访问:127.0.0.1:8001
效果如下:
访问:127.0.0.1:8002
效果如下:
完美,两个网站在两个版本的python环境下跑起来了
退出虚拟环境
1 | deactivate |
开发一致性
1.假设我们在本地开发环境,准备好了项目+依赖包环境
2.现在需要将项目上传至服务器,上线发布
3.那么就要保证服务器的python环境一致性
解决方案
通过命令保证环境的一致性,导出当前python环境的包
1
2# 将py3环境依赖包列表导出到requirements.txt文件
(py3) root@Tony-PC:/www/pyenv/py3#pip freeze > requirements.txt这将会创建一个
requirements.txt
文件,其中包含了当前环境中所有包及 各自的版本的简单列表。可以使用 “pip list
”在不产生requirements
文件的情况下, 查看已安装包的列表。上传至服务器后,在服务器下创建
virtualenv
,在venv
中导入项目所需的模块依赖1
pip3 install -r requirements.txt
virtualenvwraper
安装与使用
virtualenv
的一个最大的缺点就是:
每次开启虚拟环境之前要去虚拟环境所在目录下的 bin
目录下 source
一下 activate
,这就需要我们记住每个虚拟环境所在的目录。
并且还有可能你忘记了虚拟环境放在哪。。。
- 一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,例如
/opt/all_venv/
,并且针对不同的目录做不同的事。 - 使用
virtualenvwrapper
管理你的虚拟环境(virtualenv
),其实他就是统一管理虚拟环境的目录,并且省去了source
的步骤。
安装virtualenvwrapper
1 | pip3 install virtualenvwrapper |
设置环境变量
设置Linux
的环境变量
设置Linux
的环境变量,每次启动就加载virtualenvwrapper
1 | 把下面两行代码添加到 ~/.bashrc文件中 |
设置Mac的环境变量
mac下的环境变量设置与linux稍有不同,至少本人安装的时候没有在家目录找到.bashrc文件,mac下是.bash_profile。
我们假设我们创建的虚拟环境统一目录还是~/Envs
我们要找下我们python解释器的位置,还要找下virtualenvwrapper安装脚本
1 | Tony-iMac:~ tony$ which python3 |
都知道路径了我们才好配置环境变量
1 | 打开文件 |
然后把下面代码添加到 ~/.bash_profile
1 | export 是读取shell命令的作用 |
读取文件,使得生效,此时已经可以使用virtalenvwrapper
1 | source ~/.bash_profile |
基本使用virtualenvwrapper
1 | 创建一个虚拟环境: |
常用其他命令
1 | lsvirtualenv |