# python3小白课:解锁你心仪的三方包 ### 三方包管理仓库 **PyPI**(*Python Package Index*)是python**官方的第三方库的仓库**,所有人都可以下载第三方库或上传自己开发的库到PyPI。 它的网址为(如果访问比较慢可以寻找一些国内的镜像源站如清华大学包源[https://www.lfd.uci.edu/~gohlke/pythonlibs/](https://www.lfd.uci.edu/~gohlke/pythonlibs/),或者扶墙): [https://pypi.org/](https://pypi.org/) ![图6-8-1 pypi官网首页](assets/6-8-1.jpg) #### 查看、下载三方包 无需注册,你可以输入你想要查看或下载的包名,搜索详细信息,我们来随意搜索一个,比如做爬虫的一个很不错的三方包`requests`。输入并点击搜索按钮后会跳转到结果界面: ![图6-8-2 requests搜索结果](assets/6-8-2.jpg) 可以看到有很多很多个搜索结果,可以点击进去最匹配的那个结果。这里看到的`2.23.0`是最新版本的版本号。 ![图6-8-3 包的内页](assets/6-8-3.jpg) 如上图所示,我们进入了包的详情页面,在这里可以看到包的最新版本,底下的`pip install requests`是使用包管理工具`pip`来下载包的命令行,可以复制该行放到cmd中执行。关于包管理工具`pip`,后面我们会再详细讲解。 右上角是现在的版本是否为最新版本以及该版本的发布日期等信息。 在下面正文内容的左侧边栏有一个导航条,如图我们标注出了功能信息,默认进入的是项目描述页,会告诉我们这个包是做啥的,你可以了解一下,该信息由包的开发者提供,如果开发者比较懒,你也可能看不到啥信息。 发行历史部分是查看历史版本时间线用的,如果你需要下载一个指定的历史已发布的版本可以从这里进入。 ![图6-8-4 下载文件页面](assets/6-8-4.jpg) 下载文件部分是展示有哪些资源可供下载的。你可以查看文件类型,适合的python版本,上传日期,哈希值等信息。还可以点击链接进行下载。 比如这里我们看到有两个资源可供下载,`.whl`文件是wheel文件,轮子的意思,我觉得取的寓意很好,下载了轮子你就不用重复造轮子了。这是python打包中比较新的一种很不错的打包格式,是编译过的包文件,不需要下载代码后自己本机编译,提高了安装的成功率。下载后可以直接通过`pip`包管理工具安装,网上有些说法是说需要先安装`wheel`这个三方包才能安装,实测是不需要的。而安装`wheel`这个库之后可以自己来打包自己的`whl`文件。 > [!tip] > > 你可以尝试把下载好的whl文件后缀名修改为zip,发现它可以用压缩软件打开,实际它是一个压缩打包文件。 另一种格式是`tar.gz`格式,这是源码文件压缩格式,在有能用的`whl`包的时候我们都不太推荐用这种格式,因为有的时候需要你自己本机编译一些原始代码,如果电脑中缺少某些编译库,则会出现各种各样的报错问题,所以不到不得已不使用。 可能还有一些其他你可能见到的格式,你都可以从网上找到对应的安装方法。 上面讲的是到pypi官网去找到包并下载的,这种操作比较适合给一些公司内网(不能连接外网下载)离线安装,或者想看看有些什么包可以用的情况,实际我们在知道要安装什么包的时候,极少会登录pypi官网去下载。 #### 自己贡献三方库 除了使用全球开发者提供的各种各样的三方库之外,你也可以贡献自己的三方库。 只需要在pypi官网注册登录并按照要求上传相关的文件即可。需要注意自己注册的三方库名字不能跟官网中已有的重复即可,这个在注册项目的时候是可以搜索看一下的。 关于这块内容,入门的同学们可以不做掌握,如果大家感兴趣的话,今后在进阶或高级课程中会详细再跟大家讲解。 --- ### pip包管理工具 前面我们已经提到了`pip`这款包管理工具,同很多其他编程语言一样,通过这款工具,我们可以轻松的做到python的三方库的管理、安装、卸载等操作。 这部分我们来着重讲解一下日常常见的使用。 `pip`工具是一个命令行工具,可以在cmd命令提示符中使用。目前的python安装包通常都会自带`pip`工具一起安装的,也可以自己去下载安装,可以看一下我们第3课的截图,已经默认安装了。 可以在cmd中输入命令查看是否已安装: ```powershell pip --version ``` 如果成功弹出版本号,说明安装成功而且可以正常调用。 如果告诉你找不到`pip`这款工具,首先你可以看一下环境变量中是否已经将python安装目录下的`Scripts`目录加入了环境变量中,如果也确实加入了,可以重启再看一看。 如果还是不成功,可能你就需要手动安装一下`pip`了。需要手动安装的同学可以看下,手动安装我们参考官网介绍:[https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/) 首先我们需要戳这个下载相关文件:[https://bootstrap.pypa.io/get-pip.py](https://bootstrap.pypa.io/get-pip.py) 然后运行命令在线安装pip: ```powershell python get-pip.py ``` 如果我们保证`pip`已经安装好了,就来看一下如何使用吧。 我们有如下一些命令来使用: ```powershell # 通过pip在线安装三方库,如requests,这个命令最常使用,务必牢记 # 它会自动下载适合你目前安装的python的包并安装(如果包依赖于其他包,也会一并下载安装) pip install requests # 查看目前已安装的三方库列表 pip list # 查看目前有哪些三方库有新版本了 pip list -o # 如果pip不是最新版本,pip运行完一些命令时还会经常提醒你升级,升级pip自身的命令(一般也会给出) # 从这个命令我们知道,前面加上python -m也能调用pip相关命令,适用于Scripts文件夹未加入环境变量的情况或升级自身的情况 python -m pip install --upgrade pip # 查看pip的帮助 pip --help # 升级某个三方包,有两种写法(一般来讲功能可以用就无需更新到最新版本,因为可能不兼容) pip install --upgrade 包名 pip install -U 包名 # 卸载某个包 pip uninstall 包名 # 安装一个wheel包,如果已进入whl文件所在路径,直接写完整文件名,否则写完整路径(可加引号) pip install 本地whl文件名 # 安装源码包 pip install 本地tar.gz文件名 # 顺带一提:也可以将该压缩包解压,cmd进入解压后的文件夹,运行如下命令安装: python setup.py install # 当包下载过慢的时候,设置使用国内镜像,你可以网上搜到很多,我们以清华源镜像为例: # 帮助参考:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ # 临时一次性使用: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名 # 永久使用配置: # 先升级pip最新版(需要>=10.0.0版本) python -m pip install --upgrade pip # 注意不要使用上述网站让你用的这个命令:pip install pip -U,实测卸载pip以后无法安装,会报找不到pip了 # 源设置: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 设置完之后按往常那样安装包即可 # 离线下载包(如果包依赖于其他包,也会一并下载) pip download 包名 # 上述会在cmd当前目录下载包,你可以指定保存目录,更推荐 pip download -d 保存目录 要下载的包名 # 比如下载一个ipython包 pip download -d "E:\Programs\编程开发\python3\package\ipython" ipython # 将离线下载好的包给不能联网的电脑离线安装: pip install --no-index --find-links=下载的离线包保存目录 包名 # 比如安装ipython的包 pip install --no-index --find-links="E:\Programs\pythonpackage\for python3\ipython" ipython # 冻结项目所用的三方包(后续我们会讲到虚拟环境,只会冻结虚拟环境中用到的包): # 会将三方包的名称版本号写进requirements.txt这个文件中,供后续换电脑移植快速恢复三方包环境使用 # 约定俗称用requirements.txt,你喜欢也可以改为其他文件名 pip freeze > requirements.txt # 如果新安装的电脑能联网 pip install -r requirements.txt # 如果新安装的电脑无法联网 # 先找台能联网的电脑,批量下载这些三方包 pip download -d "保存目录路径" -r requirements.txt # 新电脑批量安装本地离线包 # 这里可能的报错的情况是:当包分py2、py3版本却下载了错误版本时,当python安装的是32位的,但安装包是64位的时。 # 这时候到pypi官网下载正确适合的包即可。 pip install --find-links="下载的离线包保存目录" -r requirements.txt # 搜索三方包 pip search 包名 ``` 基本上日常常用的`pip`命令就这些,大家可以只记住最基本的在线安装命令,因为多数时候我们也只用到这个命令而已。其他的命令,先做一个大致了解,当需要时再回来本次课程查阅即可。 本课涉及到的一些英语单词也比较多,我挑了比较重要的都列举出来了,大家可以看一下加强学习记忆。 当你都记住之后,上面的命令的记忆就基本不成问题了(偷偷告诉你,很多其他编程语言的管理工具的命令行工具的命令是类似的,记住之后对你很有帮助哦)。 ### 单词释义 | 单词 | 释义 | | -------------------- | --------------------------------------------------------- | | python package index | python包索引,简称PyPI,全球的官方python包仓库 | | search projects | 搜索项目 | | requests | 请求request的复数 | | pip | python的三方包管理工具 | | install | 安装 | | latest version | 最新的版本 | | navigation | 导航 | | project description | 项目描述 | | release history | 发行历史 | | download files | 下载文件 | | filename, size | 文件名,大小 | | file type | 文件类型 | | wheel | 轮子 | | source | 源码 | | python version | python的版本 | | hashes | 哈希值hash的复数 | | scripts | 脚本script的复数 | | upgrade | 升级 | | uninstall | 卸载 | | setup | 安装 | | config | 配置 | | set | 设置,动词 | | global.index-url | global全局的,index-url首页地址 | | download | 下载 | | --no-index | 没有索引,其实我也没太搞懂这个参数用来干嘛的 | | --find-links | 寻找链接,后面给个离线包的目录,告诉pip安装包从该目录下找 | | freeze | 冻结 | | requirements | 要求requirement的复数形式,约定俗称的冻结后保存的文件名 | | search | 搜索 |