1。什么是虚拟环境?虚拟环境的意思就像虚拟机一样。可以实现不同环境下的Python依赖包相互独立,互不干扰。让我举一个例子。假设我们电脑里有两个项目,都使用同一个第三方包,一切顺利。但由于某些原因,项目B需要用到这个第三方包的一些新特性(仅限新版本),如果贸然升级,我们无法评估对项目A的影响。此时,我们将特别指出,需要有一个解决方案,让项目A和B在两个不同的Python环境中。互不影响。为了方便大家对虚拟环境的理解,我罗列一下它的优点:不同应用开发环境的独立环境升级,不会影响其他应用,也不会影响全局的python环境,可以防止包管理混乱和版本冲突在系统中,市面上管理Python版本和环境的工具很多,这里介绍几个:p:非常简单的交互式python版本管理工具。pyenv:简单的Python版本管理工具。Vex:可以在虚拟环境中执行命令。virtualenv:用于创建隔离的Python环境的工具。virtualenvwrapper:virtualenv的一组扩展。工具有很多,但我个人认为最好用的是virtualenvwrapper,推荐大家使用。2.virtualenv由于virtualenvwrapper是virtualenv的一组扩展,所以如果要使用virtualenvwrapper,必须先安装virtualenv。安装基本使用*由于virtualenv创建的虚拟环境是在当前环境中创建的。所以我们需要准备一个专门存放虚拟环境的目录。(以下操作都是在linux上做的,windows比较简单,请自行操作,有不懂的可以微信联系我。)Create#准备好目录,进入$mkdir-p/home/wangbm/Envs$cd!$#创建虚拟环境(根据默认的Python版本)#执行后,当前目录下会有my_env01的目录$virtualenvmy_env01#你也可以指定版本$virtualenv-p/usr/bin/python2.7my_env01$virtualenv-p/usr/bin/python3.6my_env02#你一定觉得指定版本挺麻烦的每次,对吧?#在Linux下,可以把这个选项写入环境变量$echo"exportVIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7">>~/.bashrcenter/exit$cd/home/wangbm/Envs#enter$sourcemy_env01/bin/activate#exit$deactivatedelete删除虚拟环境,只删除对应的文件夹就行了。不影响全局Python等环境。$cd/home/wangbm/Envs$rm-rfmy_env01注意:创建的虚拟环境不会包含原生全局环境的第三方包,保证新创建的虚拟环境的干净。如果需要使用和全局环境一样的第三方包。可以使用以下方法:#导出依赖包$pipfreeze>requirements.txt#安装依赖包$pipinstall-rrequirements.txt3.virtualenvwrappervirtualenv虽然很好用,但是功能还不够完善。大家可能也发现了,要进入虚拟环境,必须牢记之前设置的虚拟环境目录。如果每次都按规矩来,把环境安装在固定目录下就可以了。但很多时候,人会偷懒,系统周围可能散布着很多虚拟环境,你可能会忘记它们的名字或位置。还有一点就是virtualenv切换环境需要两步,exit->enter。不够容易。为了解决这两个问题,virtualenvwrapper诞生了。安装#安装-linuxpipinstallvirtualenvwrapper#安装-windowspipinstallvirtualenvwrapper-win配置首先找到virtualenvwrapper.sh文件所在的位置find/-namevirtualenvwrapper.sh#/usr/bin/virtualenvwrapper.sh如果是windows的话就全部使用找到virtualenvwrapper.batScriptD:\ProgramFiles(x86)\Python38-32\Scripts\virtualenvwrapper.bat添加配置exportWORKON_HOME=$HOME/.virtualenvsexportPROJECT_HOME=$HOME/workspaceexportVIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper在~/.bashrc文件.shsource/usr/bin/virtualenvwrapper.sh如果是windows,添加环境变量:WORKON_HOME基本语法:mkvirtualenv[-aproject_path][-ipackage][-rrequirements_file][virtualenvoptions]ENVNAMEcommonmethod#创建$mkvirtualenvmy_env01#输入$workonmy_env01#退出$deactivate#列出所有虚拟环境,两种方法$workon$lsvirtualenv#直接切换到虚拟环境中的其他环境$workonmy_env02#删除虚拟环境$rmvirtualenvmy_env01其他命令#列出帮助文档$virtualenvwrapper#复制虚拟环境$cpvirtualenvENVNAME[TARGETENVNAME]#在所有虚拟环境上执行命令$allvirtualenvpipinstall-Upip#删除所有第三方packagesinthecurrentenvironment$wipeenv#进入当前虚拟环境的目录$cdsitepackages#进入当前虚拟环境的site-packages目录$cdvirtualenv#显示site-packages目录的内容$lssitepackages更多内容,可以查看官方文档https://virtualenvwrapper.rea...4.实战演示以上内容,就是一个使用指南接下来我们就来看看如何在项目中使用虚拟环境。如何在我们的开发中使用我们的虚拟环境?通常我们使用的场景如下。在PyCharm的交互项目中,我会一一展示。4.1在交互模式下,首先比较全局环境和虚拟环境的区别。全局环境下有requests包,但是虚拟环境下没有安装。当我们输入workonmy_env01时,前面有my_env01的标识,说明我们已经进入了虚拟环境。所有后续操作都将在虚拟环境中进行。4.2工程项目我们的工程项目都有一个入口文件。仔细观察,其中第一行可以指定Python解释器。如果我们想在虚拟环境中运行这个项目,我们只需要改变这个文件的头部。现在我还是以importrequests为例来说明是不是在虚拟环境下运行,如果是的话会报错如上。文件内容:#!/root/.virtualenvs/my_env01/bin/pythonimportrequestsprint"ok"运行前注意添加执行权限。$chmod+xming.py好的。我们再执行$./ming.py,发现果然不出所料,果然报错了。说明我们指定的虚拟环境是有效果的。4.3在PyCharm中点击文件-设置-项目-解释器,点击小齿轮。如图点击添加,根据提示添加虚拟环境。然后点击确定就可以使用这个虚拟环境了,之后所有的项目都会在这个虚拟环境中运行。
