开发者学堂课程【Python入门 2020年版:使用 pip 管理第三方包】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10362
使用 pip 管理第三方包
目录
一,pip 命令的使用
二,管理第三方包
一,pip 命令的使用
在安装 Python 时,同时还会安装 pip 软件,它是 Python 的包管理工具,可以用来查找、下载、安装和卸载 Python 的第三方资源包。
1.配置 pip
(1).可以直接在终端中输入 pip 命令,如果出错,可能会有两个原因:
①.pip 安装成功以后没有正确配置
②.安装 Python 时,没有自动安装pip(很少见)
(2) .和运行 Python 命令一样,如果想要运行 pip 命令同样也需要将 pip 命令的安装目录添加到环境变量中。
2.使用情况
Pip,是一个命令,它是 python 的第三方资源包的一个工具命令工具,是管理第三方的一个资源包,如果想下载一个东西,比如说你想实现一个功能,但是 Python 没有提供,但是有一些人,已经写了一些软件。
这个软件,正好能够实现的你的一部分功能,这时直接使用他的可以了,这时下载,就是可以用 pip 来下载的。
3.使用方法:
(1).可以在 pycharm 里打开 terminal(终端) 或者在小黑框打开 cmd 运行一下检查有没有报错。如果报错,会显示pip不是外部的命令。
(2).报错的原因及解决方法:
①因为环境变量没有配置,此时应该,点击桌面上的计算机,右键点击属性,之后再次点击高级系统设置,点击环境变量,点击 path,
c:\users\chris\APPData\Local\programs\python\python37\scripts\会看到这些命令,之后便添加,就可以解决没有 pip 的状况。
②scripts 里没有东西或者文件夹里没有pip,这时最简单的方法就是把 python 卸载重装。卸载后再次安装时,会看到instal now 和 custemize installation,这时,一定要注意选择 instal now,只有选择 instal now 时才会有 pip,选择 custemize installation 时,是会漏掉 pip 的。虽然也有单独下载 pip 的方法,但是较为麻烦,所以比较推荐卸载后再次安装。
二,管理第三方包
对第三方包的管理主要包含查找、安装和卸载三个部分的操作。
1.安装
使用 pip install <包名> 命令可以安装指定的第三方资源包。
pip install ipython #安装 ipython 包
(1).解释:
使用 install 命令下载第三方资源包时,默认是从 pythonhosted 下载,由于各种原因,在国内下载速度相对来说比较慢,在某些时候甚至会出现连接超时的情况,我们可以使用国内镜像来提高下载速度。
(2).举例:
可以安装之前知道的 pip install numpy 或者 pip install flask,运行 pip install flask,就可以看到有一个网站命名为https://files.pythonhosted.org/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f,这也说明从这个网站上下载。
下载之后会发现,它会放到一个路径上,也就是
c:\users\chris\appdata\local\programs\python\python37\lib\site-packages (from Jinja2>=2.10.1->flask)(1.1.1) ,也就是说放在 c 盘,chris,appdata,local,programs,python37,lib,site-packages,flask 里。
(3).下载加速方法
(4).从此前运行的网站中可以看出是
https://files.pythonhosted.org/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f
pythonhosted 这个网站是在国外的。
结果中可以看出来
WARNING:Retrying(Retry(total=4,connect=None, rea d=None, redirect=None, status=None)) after connection broke n by 'ProxyError('Cannot connect to proxy.', oserror(0,'Error')):/simple/flask/是超时的。
使用国内的镜像就可以很好的解决这个问题。
http://pypi.douban.com/simple/是中国国内的豆瓣。用这个就可以达到 6.4MB/s的飞快速度。
(4).延伸知识:
Python 在查找模块的时候,在哪些路径下查找?
Import sys
print(sys) #打印出来的列表
['c:\\Users\\chris\\Desktop\\python 基础l\Day11-面向对象基础\\01-代码','C:\\Users\\chris\\Desktopl\Python基础
l\Day11-面向对象基础\\01-代码',
'c:\\Users\\chris\\AppData\\Locall\Programs\\Python\\py thon37\\python37.zip', 'c:\\Users\\chris\\AppData\\Locall\Programs\\Python\\pyt thon37\\DLLs', 'c:\\Users1\chris\\AppDatal\Local\\Programsl\PythonllPyt thon37\\lib','C:\\Users1\chris\\AppDatal\Local\\Programsl\Pythonl\Pyt thon37',
'c:\\Users\\chris\\AppDatal\Roaming\\Python\\Python37\1s site-packages',
'c:\\Users\\chris\\AppData\\Locall\Programs\\Pythonl\Pyt thon37\\1ibl\site-packages']
列表中的倒数第二个和最后一个里,我们可以找到 site-packages。这里我们也可以再次验证 flask 装到了 site-packages 里。
2.卸载
(1).pip unistall #表示卸载
(2).Pip unistall <pacage name> 用来删除第三方模块
(3).举例:
pip unistall flask,选择确认删除后,我们可以再次验证,这时,会发现文件夹里没有 flask 相关的东西了。
3.列出 pip 模块
(1).Pip list #用来列出当前环境安装的模块名和版本号
(2).Pip freeze #用来当前环境安装的模块名和版本号
(3).Pip freeze>file_name #将安装的模块名称和版本号重定向输出到指定的文件。
freeze 的命令里加一个大于号是一个承递项。
freeze>requirements.txt 运行之后,会发现并没有输出东西。
这说明输出到了 requirements.txt 里。刷新之后会发现,在 requirements.txt 里就可以发现 freeze 原本输出的内容。这就是本来输出在控制台,改到了输出到文件夹。
注意,虽然也可以写除了 requirements 的别的文件夹名,但是由于规定了都写为 requirements,所以并不推荐改成其他文件夹名。
此图为老师解释使多个代码运行的解释图:
(4).pip install-r file _name #读取文件里模块名和版本号并安装。
4.临时修改
(1).如果只是想临时修改某个第三方资源包的下载地址,在第三方包名后面添加 -i 参数,再指定下载路径即可,格式为 pipinstall<包名>-i<国内镜像路径>
(2).pip install <pacage_name>-i <url> #从指定的地址下载包。
只修改这一个文件的下载路径。
下载时如果没有写 _i 就会默认从
https://files.pythonhosted.org/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f下载,如果填写了 _i 就会从指定的地址来下载。
但是,也并不全是这种情况,也有一些例外,如果用阿里云服务器,那就便会从阿里镜像下载。腾讯云服务器,就会从腾讯镜像下载。
常见国内镜像有这些:
阿里云 https://mirrors.aliyun.com/pypi/simplel
中国科技大学https://pypi.mirrors.ustc.edu.cn /simplel
豆瓣(douban)https://pypi.douban.cn /simplel
清华大学https://pypi.tuna.tsinghua.edu.cn/simplel
中国科学技术大学https://pypi.tuna.ustc.edu.cn/simplel
pip install ipython-i https://pypi.douban.cn /simplel Cop
5.永久修改
除了临时修改 pip 的下载源以外,我们还能永久改变 pip 的默认下载路径。
在当前用户目录下创建一个 pip 的文件夹,就是在当前用户,chris,里新建一个文件夹,命名为 pip,之后再新建一个 pip 用户文档,命名为 pip ini,用 edit with Note pad** 打开。
文件并输入一下内容:
[global]
index-url=https://pypi.douban.com/simple[install]
trusted-host=pypi.douban.com
输入之后,我们可以继续验证。举例为,pip unistall flask 回车,结果会在https://pypi.douban.cn /simplel,会发现没有-i来指定也会找回豆瓣。
注意,如果豆瓣超时,崩了的情况,可以使用中国科技大学https://pypi.mirrors.ustc.edu.cn /simplel,中国科学技术大学 https://pypi.tuna.ustc.edu.cn/simplel,阿里云
https://mirrors.aliyun.com/pypi/simplel 等国内其他的镜像。
6.使用 pycharm 管理第三方包
(1) .除了使用 pip 命令管理第三方资源包以外,我们还能使用 pycharm 来对第三方进行管理。
(2) .在 settings 里找到 project interpreter,在 project interpreter 里我们可以发现我们装的东西都在里面。
举例,把 flask 卸载掉,卸载的方法为点击 falsk 之后点击右边的减号。这时,会发现 flask会被删除掉。
如果,想重新加进来。可以搜索flask,找到后选中,再点击下方的 install package,加载过后就可以重新被下载。
此图为 project interprete 里存在的内容:
7.查找
使用 pip list 或者 pipfreeze 命令可以来管理第三方资源包。这两个命令的功能一致,都是用来显示当前环境里已经安装的包,区别在于 piplist 会列出所有的包,包括一些无法 uninstall 的包;而 pip freeze 只会列出我们安装的第三方包。
8.总结
开发中,我们通常会使用很多第三方的资源包,我们在将程序部署到服务器的时候,不仅要把代码上传到服务器,同时还需要把代码里用到的第三方资源包告诉服务器。
那么这里就有两个问题:
(1).当我们电脑上运行很多个项目,每个项目使用的第三方资源包又不一致时,怎样将代码和它使用到的第
三方资源包放在一起呢?答虚拟环境
(2).怎样将自己代码使用到的第三方资源包告诉给服务器?
①.使用 pip freeze> requires.txt 命令,将代码里使用到的第三方资源包以及版本号写入到 requirements.txt 文件,在部署时,同时将 requirementstxt 文件 上传到服务器。
②.服务器在拿到代码以后,首先运行 pipinstall-rrequirementstxt 命令,将文件里列出的所有第三方伦架先安装到服务器,然后才能运行代码。