一、Pip1。1pip简介 Python之所以受欢迎不光是因为它简单易学,更重要的是它有成千上万的宝藏库。这些库相当于是已经集成好的工具,只要安装就能在Python里使用。它们可以处理各式各样的问题,无需你再造轮子,而且随着社区的不断更新维护,有些库越来越强大,几乎能媲美企业级应用。那么这些工具库怎么下载安装呢?它们被放在一个统一的仓库里,名叫PyPi(PythonPackageIndex),所有的库安装都是从这里调度。有了仓库之后,还需要有管理员,pip就是这样一个角色。 pip是Python中的标准库管理器,这意味着它是一个工具,用它可以来管理Python标准库中其他的包,允许你安装和管理不属于Python标准库的其它软件包,其提供了对Python包的查找、下载、安装、卸载等功能。总的来说,pip的Python第三方库的大管家,搞懂它,会让你省很多事。从Python3Python3。4、Python2Python2。7。9版本开始,pip默认包含在Python的安装程序中,在安装Python时将会自动被安装,省事方便。 Python的安装器中自带了pip,所以你可以直接使用它,除非你安装的是更早版本的Python。你可以通过以下命令来判断是否已安装:pipversionPython2。x版本命令pip3versionPython3。x版本命令 如果你的Python环境没有安装pip,则可以使用以下方法来手动安装。pip安装文件下载:pypi。orgprojectpip下载安装脚本curlhttps:bootstrap。pypa。iogetpip。pyogetpip。pyPython2。x运行安装脚本pythongetpip。pyPython3。x运行安装脚本python3getpip。py升级pip版本,需要使用python的命令来升级python3mpipinstallupgradepip 一般情况下,如果同时安装了Python2和Python3,那么pip对应的是Python2,pip3对应的是Python3。若是只安装了Python3的话,那么pip和pip3的使用效果是完全相同的。1。2pip常用命令 pip提供的命令不多,但是都很实用 命令 说明 pipversion或者pipV 查看pip版本 pipinstallPackageName〔x。y。z〕 使用pip安装第三方库,如果后面带有版本号,则安装指定版本 pipuninstallPackageName 安装好的库可以再卸载 pipinstallupgradePackageName 对当前库进行版本升级 piplist 列出所有已安装的第三方库和对应版本 pipcheckPackageName 验证已安装的库是否有兼容依赖问题 piplistoutdated或者piplisto 目前已经安装的库中,看哪些需要版本升级 pipshowPackageName 显示已安装软件包的信息 pipshowverbosePackageName 显示有关包的所有信息 pipshowfPackageName 查看库信息 piphelp 帮助显示命令的帮助 pipconfiglist 查看pip配置1。3配置pip镜像 pip命令默认使用的是国外的pypi镜像(pypi。python。org),安装慢不说,有时甚至会导致出现超时等网络问题,有时候为了安装一个包,失败重试安装好几次都不一定成功。所以,使用国内的pypi镜像,亦即切换pip源,这样速度上更有保证,不失为一种加速pip安装第三方包的好方法。常用的镜像站有阿里云、清华大学等。其中清华大学开源软件镜像站是每5分钟同步一次的,比较推荐使用。阿里云镜像站的速度也非常快,这也是我现在在使用的。 切换切换pip源可以是临时性的,也可以设置为默认。临时性的,就是在安装包时,通过pip命令的i选项指定镜像源即可。例如,临时使用阿里云镜像站作为pip源,可以是这样安装:安装包时,使用i参数,指定pip源pipinstallihttps:mirrors。aliyun。compypisimpleredis 如果每次安装时都想要通过镜像源来安装,上面的办法不免有些麻烦。我们可以修改pip的配置文件,将镜像源写入到pip配置文件中。对于linux系统,修改。pippip。conf文件(没有就创建一个文件夹及文件,文件夹要加。,表示是隐藏文件夹):创建。pippip。conf命令mkdir。piptouch。pippip。conf 然后在文件中保存如下内容:〔global〕添加默认下载地址,以阿里云源为例indexurlhttps:mirrors。aliyun。compypisimple〔install〕此参数是为了避免麻烦,否则使用的时候可能会提示不受信任trustedhostmirrors。aliyun。com 对于windows系统,在C:Users文件夹下的用户目录(例如如果当前用户是Administrator则是C:UsersAdministrator)下创建pip文件夹,然后再在此文件夹下创建pip。ini文件,在文件中写入一下内容:〔global〕添加默认下载地址,以阿里云源为例indexurlhttps:mirrors。aliyun。compypisimple〔install〕此参数是为了避免麻烦,否则使用的时候可能会提示不受信任trustedhostmirrors。aliyun。com 配置完成后再通过pipconfiglist查看pip配置。二、Pyenv 我们经常会遇到这样的开发需求,比如你手头有多个开发项目,其中项目A要求用python3。7,项目B需要用python3。6,有要求项目A和项目B依赖包相互独立,互不干扰。为了满足这样的开发需求,我们需要在自己的电脑上安装多个Python版本,并且项目之间进行环境隔离。因此,我们要想运行这些项目,在工作电脑上就要安装不同版本的Python。pyenv是Python版本管理工具,通过系统修改环境变量来实现Python不同版本的切换,利用它可以在同一台电脑上安装多个版本的Python,设置目录级别的Python,还能创建和管理vitualpythonenviroments。而且所有的设置都是用户级别的操作,不需要sudo命令。2。1安装或升级pyenv 首先安装pyenv,如果你是Mac电脑,那么推荐使用Homebrew来安装。brewupdatebrewinstallpyenv 要想升级pyenv,则可以执行:brewupdatebrewupgradepyenv pyenv安装完成后,需要将HOME。pyenvbin添加到PATH变量前面,这一步非常关键。echoexportPATHHOME。pyenvbin:PATH。bashprofilesource。bashprofile 也可以采用手动安装的方式,将pyenv检出到你想安装的目录。gitclonegit:github。comyyuupyenv。git。pyenvechoexportPYENVROOTHOME。pyenv。bashprofileechoexportPATHPYENVROOTbin:PATH。bashprofilesource。bashprofile 添加环境变量,将PYENVROOT指向pyenv检出的根目录,并向PATH添加PYENVROOTbin以提供访问pyenv命令的路径。这里的shell配置文件(。bashprofile)依不同系统而需作修改,如果使用Zsh则需要相应的配置。zshrc 在使用pyenv之后使用pip安装的第三方模块会自动安装到当前使用python版本下,不会和系统模块产生冲突。使用pip安装模块之后,如果没有生效,记得使用pyenvrehash来更新。2。2用pyenv安装Python 安装完pyenv,可以安装Python,首先查看可安装的Python版本:pyenvinstalll,接下来开始安装Pythonpyenvinstallversionversion为版本号安装完成后进行更新pyenvrehash 执行命令pyenvversions查看安装结果。查看所有已经安装的版本,注:星号指定当前的版本pyenvversionssystem(setbyUsersdllwh。pyenvversion) 可以看到,已经成功安装了Python,安装的位置在Usersdllwh。pyenv。2。3Python版本管理pyenvglobal全局设置python为指定版本。通过将版本号写入。pyenvversion文件的方式,设置全局的Python版本,切换完成后,在系统中任何地方执行python,你会发现都是同样的Python版本。pyenvlocal属于局部切换,通过将版本号写入当前目录下的。pythonversion文件的方式,修改当前目录下的Python版本,出了当前目录则失效。而且通过这种方式设置的Python版本优先级较global高。pyenvshell设置当前shell窗口使用的python版本,通过设置当前shell的PYENVVERSION环境变量的方式,设置shell的Python版本。这个版本的优先级比local和global都要高。unset参数可以用于取消当前shell设定的版本。pyenvglobal3。9。9pyenvversionsystem3。9。9(setbyUserschunming。liu。pyenvversion) 可以看到,3。9。9前面有一个星号,说明成功切换到了3。9。9版本,可以执行一下python来验证。三、Pipenv Pipenv是Python官方推荐的包管理工具,它综合了virtualenv、pip和pyenv三者的功能,你可以使用pipenv这一个工具来安装、卸载、跟踪和记录依赖性,并创建、使用和组织你的虚拟环境。3。1安装和升级pipenv 如果你是Mac电脑,那么推荐使用Homebrew来安装和升级pipenv:brewupdatebrewinstallpipenvbrewupdatebrewupgradepipenv 也可以通过pip来安装和升级pipenv:pipinstallpipenvpipinstallupgradepipenv3。2为项目建立虚拟环境 进入到项目目录中,通过下面的指令为项目创建虚拟环境。mkdirpipenvdemocdpipenvdemopipenvpython3。9。9CreatingavirtualenvforthisprojectPipfile:UsersdllwhworkpipenvdemoPipfileUsingUsersdllwh。pyenvversions3。9。9binpython3(3。9。9)tocreatevirtualenvCreatingvirtualenvironment。。。UsingbaseprefixUsersdllwh。pyenvversions3。7。7NewpythonexecutableinUsersdllwh。localsharevirtualenvspipenvdemoRYMSREdabinpython3AlsocreatingexecutableinUsersdllwh。localsharevirtualenvspipenvdemoRYMSREdabinpythonInstallingsetuptools,pip,wheel。。。done。RunningvirtualenvwithinterpreterUsersdllwh。pyenvversions3。7。7binpython3Successfullycreatedvirtualenvironment!Virtualenvlocation:Usersdllwh。localsharevirtualenvspipenvdemoRYMSREda 上面的操作,给pipenvdemo这个项目初始化了一个Python3。9。9的虚拟环境,并在项目录下生成一个项目依赖包文件Pipefile。如果系统中没有3。9。8版本的Python,pipenv会调用pyenv来安装对应的Python的版本。默认地,虚拟环境会创建在。localsharevirtualenvs目录里面。我们也可以通过pipenvvenv查看项目的虚拟环境目录。可以通过pipenvrm删除虚拟环境。 如果想更改虚拟环境的目录,可以在。bashrc或。bashprofile中,设置环境变量WORKONHOME,指定虚拟环境的目录所在位置,比如想将虚拟环境放到。venvs目录,则可以执行下面的命令。echoexportWORKONHOME。venvs。bashprofilesource。bashprofile 如果希望在项目目录下创建虚拟环境目录(。venv),需要在。bashrc或。bashprofile中配置环境变量PIPENVVENVINPROJECT:echoexportPIPENVVENVINPROJECT1。bashprofilesource。bashprofile3。3用Pipenv管理依赖包 pipenv使用Pipfile和Pipfile。lock来管理依赖包,并且在使用pipenv添加或删除包时,自动维护Pipfile文件,同时生成Pipfile。lock来锁定安装包的版本和依赖信息。相比pip需要手动维护requirements。txt中的安装包和版本,具有很大的进步。3。3。1安装依赖包 为项目安装依赖包到虚拟环境中,使每个项目拥有相互独立的依赖包,是非常不错的Python的开发实践。安装依赖包到虚拟环境中的方法:pipenvinstallpytest 执行完上面的命令后,检查一下是否安装成功:pipenvgraph 观察项目的根目录下,又多了一个Pipfile。lock文件。这两个文件记录了此项目的依赖包,这两个文件的区别是Pipfile中安装的包不包含包的具体版本号,而Pipfile。lock是包含包的具体的版本号的。如果不想产生Pipfile。lock文件,在安装依赖包的时候,加上skiplock选项即可。 在使用pipenv的时候,常常会安装过程比较慢,这个是因为pipenv创建的Pipfile中默认的Pypi源是python官方的pypi。python。orgsimple。我们国内pipenvinstallpypimirrorhttps:pypi。tuna。tsinghua。edu。cnsimple软件包名称 为了避免每次都要指定pypimirror,我一般会在创建好Pipfile以后,将文件中source块下的url字段,设置为国内的pypi源,我推荐的是清华的Pypi源或者阿里源,具体设置如下:〔〔source〕〕阿里镜像源urlhttps:mirrors。aliyun。compypisimple清华大学镜像源urlhttps:pypi。tuna。tsinghua。edu。cnsimpleverifyssltruenamepypi3。3。2删除依赖包 如果是要删除虚拟环境中的第三方包,执行:pipenvuninstallpytest3。3。3安装项目所有的依赖包 用git管理项目时候,要把Pipfile和Pipfile。lock加入版本跟踪。这样clone了这个项目的同学,只需要执行:pipenvinstall 就可以安装所有的Pipfile中〔packages〕部分列出来的包了,并且自动为项目在自己电脑上创建了虚拟环境。3。3。4安装pipefile。lock中的依赖包 上面的方法都是安装Pipfile中列出来的第三方包的最新版本,如果是想安装Pipfile。lock中固定版本的第三方依赖包,需要执行:pipenvinstallignorepipfile3。3。5安装requirements。txt里面的依赖包 如果项目之前使用requirements。txt来管理依赖的,那么使用pipenv安装所有依赖可以采用类似pip的方法:pipenvinstallrrequirements。txt3。4使用虚拟环境开发 虚拟环境创建好了之后,就可以在里面进行开发了。如果在命令行下开发,则在项目目录下执行pipenvshell,就进入到了虚拟环境中,在这个环境中,已经包含安装过的所有依赖包了,接下来就可以利用这些依赖包进行开发工作了。如果是用Pycharm进行开发,就更简单了,直接用Pycharm打开项目即可。可以从Pycharm中的左侧导航栏里面看到ExternalLibraries显示的是虚拟环境中的Python解释器了。 在虚拟环境中执行开发好的程序,有两种方式,一种是前面提到的先执行pipenvshell进入到虚拟环境后,再执行python程序;另一种方式,则是执行pyenvrun,比如在虚拟环境中执行基于pytest框架编写的测试用例,只需要执行下面的命令即可:pipenvrunpy。test 作者:独泪了无痕 链接:https:juejin。cnpost7063699409703272485