bcbeer 2020-05-15
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。
此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。这里,就要隆重介绍 virtualenv
,一个可以帮助我们管理不同 Python 环境的绝好工具。
virtualenv
可以在系统中建立多个不同并且相互不干扰的虚拟环境。
1.用pip指定清华源下载virturalenv
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
升级pip工具命令
pip3 install --upgrade pip
2.创建目录
cd /opt/ mkdir /PyEnv 进入PyEnv中
3.创建独立运行环境-命名
virtualenv --no-site-packages --python=python3 venv1 # 得到独立第三方包的环境,并且指定解释器是python3
4.进入虚拟环境
source venv1/bin/activate # 此时进入虚拟环境(venv)Myproject
5.安装第三方包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.18
此时pip的包都会安装到venv环境下,venv是针对Myproject创建的。
6.退出环境命令
deactivate
virtualenv
是如何创建“独立”的Python运行环境的呢?
原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv
环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
假设我们在本地开发环境,准备好了项目+依赖包环境,现在需要将项目上传至服务器,上线发布,那么就要保证服务器的python环境一致性。
在实际工作情况中,开发环境的统一是非常重要的。
1.通过命令保证环境的一致性,到处当前windows下python环境的包。
到出的文件在users/用户名下。
pip3 freeze > requirements.txt
2.将requirements.txt文件发送给linux服务器,可通过lrzsz或scp
scp requirements.txt :dir
3.在linux中的虚拟环境中安装即可
注意切换到想要同步的虚拟环境中,执行的文件也要是相对路径或绝对路径
pip3 install -i https://pypi.douban.com/simple -r requirement.txt
windows如果也创建了虚拟环境,并且模块在虚拟环境中,想要迁移环境到linux中,
1.第一步,在windows中激活虚拟环境,在虚拟环境下
pip3 freeze > requirement.txt
2.将此文件,发送给linux服务器,可选lrzsz 或scp
scp requirements.txt :dir
3.在linux中安装即可
pip3 install -i https://pypi.douban.com/simple -r requirement.txt
因为virtualenv
都是用户手动去安装生成,那么就可能导致如下情况,用户a新建了一个虚拟环境在/home/下,用户b生成了虚拟环境2在/opt/下,最后虚拟环境目录十分混乱,用户使用虚拟环境的时候也分不清谁是谁。
而virtualenvwrapper
工具可以帮助我们,统一的管理linux中的python虚拟环境,并能够通过快捷命令的方式快速切换虚拟环境,十分方便。
但是virtualenvwrapper
也存在它的问题,他能管理的是同一个python版本的虚拟环境,也就是说如果你需要同时管理python2和python3 的虚拟环境,virtualenvwrapper
是无法做到的,你还是需要通过virtualenv来手动创建虚拟环境。
1.安装工具
因为virtualenvwrapper
工具是物理环境的python使用的包,所以安装的时候需要退出虚拟环境后执行安装命令
pip3 install -i https://pypi.douban.com/simple virtualenvwrapper
2.配置用户个人配置文件
因为我们需要每次开机时,让系统都加载这个virtualenvwrapper
工具,我们需要把这个配置写到文件中,我们知道系统变量的配置文件/etc/profile,那么用户的配置文件呢?
用户个人的配置文件,在家目录下的~/.bash_profile
中
vim ~/.bash_profile # 修改家目录下个人配置文件
3.写入如下配置
export WORKON_HOME=~/Envs # 设置virtualenv的统一管理目录 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=‘--no-site-packages‘ #添加virtualenvwrapper的参数,生成干净隔绝的环境 export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 # 指定python解释器 source /opt/python36/bin/virtualenvwrapper.sh # 只有这一步,才是让这个工具生效的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
注意在指定python解释且的时候,填写自己的python路径。
4.查看是否加载了virtualenvwrapper工具
退出会话,重新登录,查看是否加载了virtualenvwrapper工具
ctrl + d 快速退出会话 ctrl + shift + r 快速重连会话
5.创建虚拟环境
工具创建后,使用命令管理 创建虚拟环境。
mkvirtualenv django1
操作步骤演示如下:
workon # 虚拟环境的名字(支持tab补全) #激活虚拟环境 lsvirtualenv # 列出所有虚拟环境的目录 cdvirtualenv # 进入已激活的虚拟环境的目录 cdsitepackages # 进入虚拟环境下的第三方模块目录