简单来说,pip 就是 Python的 包管理工具,该工具提供了对Python 包的下载、查找、安装、卸载的功能
从Python 3 >= Python 3.4 、Python2 >= Python2.7.9 版本开始,pip默认包含在Python的安装程序中,在安装Python时将会自动被安装,省事方便
pip 是一个命令行程序,安装 pip 后,可以在命令提示符(俗称黑终端)中执行命令语句
在使用 pip 安装包之前,应检查 pip 是否已正确安装,在终端输入以下指令
pip --version
、pip -V
、py -m pip --version
一些 Liunx 系统也能用这些指令
$ python -m pip --version
上面的指令会显示 pip的版本和路径,能正确显示即为正确安装
书写格式: pip install [包名]
拿安装 requests
库为例
pip install requests
值得注意的是,如果不指定版本安装,默认安装 适用当前Python 的最新版本
书写格式: pip install [包名]==[版本号]
指定安装 requests
包 2.24.0 版本 为例
pip install requests==2.24.0
在下载 Python包 的时候,有没有想过一个问题,这些包是从哪里下载的?
在默认情况下 pip 将从 Python Package Index https://pypi.org 安装软件包
由于语言是 老外开发设计的,因此使用 PIP 的默认下载时是从国外的网站加载,这就照成了下载速度慢,下载不稳定等诸多问题,对于 网络状况好的人 还好说,最多也就是下载慢点但能安装成功,可对于 网络状况不好的人 来说就是个噩耗,有时候为了安装一个包,失败重试安装好几次都不一定成功
有没有什么方法可以解决这个问题呢?
当然有,也很简单,将下载的地址切换成国内镜像源就行了,那么啥是镜像源呢?
语法如下:
pip install -i <镜像源地址> [包名]
还是拿安装 requests
库为例,使用国内的 清华源 进行下载安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
如果觉得每次安装包都得指定源地址太麻烦,那么可以将默认地址https://pypi.org 修改成需要的国内镜像地址,一劳永逸
Windows系统: 在你所使用的系统用户目录下,即User目录下,创建一个pip文件夹,完整路径为:C:\Users\XXX\pip,再在此文件夹下创建一个 pip.ini 文件,并在此文件下输入以下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple # 添加默认下载地址,以清华源为例
[install]
trusted-host =https://pypi.tuna.tsinghua.edu.cn # 此行目的是为了添加信任网址
Liunx系统:
先移动到此目录 cd ~/.pip
,如果目录不存在则自己创建一个文件夹 mkdir ~/.pip
,在此目录下创建一个 pip.conf 文件 touch pip.conf
,并在此文件下输入以下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple # 添加默认下载地址,以清华源为例
[install]
trusted-host =https://pypi.tuna.tsinghua.edu.cn # 此行目的是为了添加信任网址
与 Windows 内容一致
名称 | 地址 |
---|---|
阿里云 | https://mirrors.aliyun.com/pypi/simple/ |
清华大学 | https://pypi.tuna.tsinghua.edu.cn/simple/ |
中国科技大学 | https://pypi.mirrors.ustc.edu.cn/simple/ |
豆瓣(douban) | http://pypi.douban.com/simple/ |
中国科学技术大学 | http://pypi.mirrors.ustc.edu.cn/simple/ |
在更换Python版本、或者更换电脑时,需要重新使用 pip 包管理工具 来安装需要的库,但对于熟练使用Python的人来说,需要安装的包往往不止一两个,这么多个包通过一条一条指令安装是一件很麻烦是事,且会存在忘记包名是啥 或者 忘记需要打这个包的情况
其实 pip 包管理工具 已经提供了功能去解决这个问题
标题中的备份,并不是指把 包源文件 给直接备份,而是存储其包名和版本号,通过这些信息,再重新安装 Python 包
基本使用
使用 pip freeze > [路径]
命令,可以生成一个包含包名和版本号的文本文件,其格式为 使用 pip install 期望的格式 如图所示
关于路径,有绝对路径和相对路径两种传入方式
C:\Users\Admin>pip freeze > requirements.txt
C:\Users\Admin>pip freeze > D:\requirements.txt
生成这个文本文件后
可以通过 pip install -r [文件]
命令,把 文本文件 中 每一行的包 都安装一遍,美名其曰 自动化安装
接着拿 requirements.txt 文件做例子
以相对路径方式导入文件
D:\pip install -r requirements.txt
以绝对路径方式导入文件(推荐)
D:\pip install -r D:\requirements.txt
手动创建文件
基本使用中的方法固然可以备份并恢复Python的包,但一定要注意的是,因为备份的文本内容每一行的包名是带版本号的,这就意味这有两个问题:
当然,对于项目和一些要求来说,严格使用对应版本的包和Python这很正常;可如果只是个人使用的话,这就见的不太友善了,那么有没有什么办法可以解决这个问题?先思考一件事,能不能自己手动创建这个文本文件
答案是可以的,但创建文本文件时一定要选择UTF-8编码,再使用上面 自动化安装 的方法
对比上面的截图少了很多包名,这是因为安装包时会自动安装一堆的依赖,其实自己去安装的包名也就这些
这里提供此文本文件下载地址:requirements.txt
以 requirements.txt 文件名命名,是一个规范,也是一种程序员之间约定俗成的规定,此文件存放依赖包的信息
先来看看 pip 内置的帮助文档
pip -h
或 pip help
或直接 pip
用法:
pip <命令> [选项]
命令:
install 安装软件包。
download 下载软件包。
uninstall 卸载软件包。
freeze 以需求格式输出已安装的软件包。
list 列出已安装的软件包。
show 显示有关已安装软件包的信息。
check 验证安装的软件包是否具有兼容的依赖性。
config 管理本地和全局配置。
search 在PyPI中搜索软件包。
cache 检查和管理pip的滚轮缓存。
whell 根据您的要求制造whell。
hash 计算软件包归档文件的哈希值。
completion 用于完成命令的帮助程序命令。
debug 显示对调试有用的信息。
help 显示命令帮助。
常规选项:
-h,--help 显示帮助。
--isolated 在隔离模式下运行pip,忽略环境变量和用户配置。
-v,--verbose 提供更多输出,选件是添加剂,最多可使用3次。
-V,--version 显示版本并退出。
-q,--quiet 减少输出。选件是添加剂,最多可使用3次(对应于警告,错误和严重日志记录级别)。
--log 附加详细日志的路径。
--proxy 以[user:passwd @] proxy.server:port的形式指定代理。
--retries 每个连接应尝试的最大重试次数(默认5次)。
--timeout 设置套接字超时(默认15秒)。
--exists-action 路径已存在时的默认操作:(s)witch,(i)gnore,(w)ipe,(b)ackup,(a)bort。
--trusted-host 将此主机或host:端口对标记为受信任,即使它没有有效的HTTPS或任何HTTPS
--cert 备用CA捆绑软件的路径。
--client-cert SSL客户端证书的路径,一个包含私钥和PEM格式的证书的文件。
--cache-dir 将缓存数据存储在中。
--no-cache-dir 禁用缓存。
--disable-pip-version-check 不要定期检查PyPI以确定是否有新版本的pip可供下载。 隐含--no-index。
--no-color 禁止彩色输出。
pip <命令> [选项]
命令 | 描述 |
---|---|
install | 安装包 |
uninstall | 卸载包 |
download | 下载包 |
freeze | 以安装格式输出已安装的包 |
list | 列出已安装的包 |
show | 显示有关已安装包的信息 |
hash | 计算软件包归档文件的哈希值 |
debug | 显示对调试有用的信息 |
help | 显示命令帮助 |
install 安装软件包
书写格式: pip install [包名]
,详情参考 二、PIP 基本使用
Install 选项 | 书写格式 | 描述 |
---|---|---|
-U,–upgrade | pip install -U [包名] |
将指定的包升级到最新版本 |
-t, --target |
pip install -t <路径> [包名] |
将包安装到指定路径中,默认情况下不会替换现有的文件/文件夹 |
-i, --index-url |
pip install -i <地址> [包名] |
Python包索引的基本URL(默认为https://pypi.org/simple) |
-I, --ignore-installed | pip install -I [包名] |
忽略已安装的软件包,将其覆盖 |
使用 pip install -t <路径> [包名]
命令,可以切换国内镜像源下载地址,详情参考 三、PIP 切换国内镜像源(重点)
使用 pip install -U [包名]
可以将 包 进行升级操作,一般先使用pip list -o
命令列出可以升级的包,如果需要升级的包可以升级,再使用此命令进行升级操作,配合使用
拿升级 Pillow 为列,pip install -U Pillow
选项之间可以配合使用,如之前提到过的切换镜像源,升级包的时候其实也是使用默认的国外地址进行下载,这时候配合切换镜像源下载能够更快完成升级,
pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple/ Pillow
uninstall 卸载软件包
书写格式: pip uninstall [包名]
以卸载 openpyxl 为例 ,pip uninstall openpyxl
途中会要求我们输入一个是否确认:y 代表确认删除,n 代表取消删除
在语句中加个选项,可以免去确认卸载的步骤
pip uninstall -y [包名]
freeze 以安装格式输出已安装的包
list 列出已安装的软件包
list 选项 | 书写格式 | 描述 |
---|---|---|
-o,–outdated | pip list -o |
列出不是最新的包 |
-u,–uptodate | pip list -u |
列出最新包 |
-e, --editable | pip list -e |
列出可编辑项目 |
-l, --local | pip list -l |
如果在具有全局访问权限的virtualenv中,请勿列出全局安装的软件包 |
–user | pip list --user |
仅输出安装在用户站点中的软件包 |
–path |
pip list --path |
限制为列出软件包的指定安装路径 |
–format |
pip list --format |
在以下列中选择输出格式: columns (default)、 freeze、 or json |
选项 | 描述 |
---|---|
-h,–help | 显示帮助 |
-v,–verbose | 提供更多输出,选件是添加剂,最多可使用3次 |
-V,–version | 显示版本并退出 |
–timeout |
设置套接字超时(默认15秒) |
–no-color | 禁止彩色输出 |
-h 显示帮助(实用)
这是一个实用的选项,在不知道如何去使用一个命令时,可以通过此方法,将我们需要使用命令的帮助手册给调用出来
如pip install -h
就能列出使用 安装命令的帮助手册,pip list -h
能列出使用 展示列出 的帮助手册
-V,–version 显示版本并退出
此方法一般用于 检查 pip 是否已正确安装,也可以单纯的只是为了知道其版本
用于检查 pip 是否正确安装的原因 无非就是看此命令是否可以正确显示结果,基于这个原理,也可以直接使用 pip
或 pip list
等命令检查 pip 是否已正确安装
–timeout 设置套接字超时
如果你的网络实在是烂,那么此选项或许可以帮助到你,在安装包的时候常常会由于网络问题,导致超时,这个超时时间默认15秒,那么可以通过手动更改为更长的超时时间,缓解超时的问题
以安装 pandas 为例,pip install pandas --timeout=30
当然,也可以把超时时间改短,但一般没人会这么去做
命令 和 选项 的书写顺序其实在一些命令中,没有严苛要求
pip install -h
与 pip -h install
一致pip install pandas --timeout=30
与 pip --timeout=30 install pandas
一致