每天学习一点Python——pip包管理器零基础完全指南
不会安装第三方库?一文带你彻底搞懂Python的pip
引言:为什么我们需要pip?
当你开始编写稍微复杂一点的Python程序时,会发现Python自带的标准库(比如math、random、os)已经不够用了。你想爬取网页数据、处理Excel表格、生成PDF文件——这些功能Python默认并没有提供。
这时候就需要第三方包。它们是其他开发者写好的代码,你可以直接拿来用。而pip就是Python官方指定的“快递小哥”,负责把这些包下载、安装到你的电脑里。
从Python 3.4开始,pip已经内置在Python安装包中,你不需要单独安装。但如何使用它,里面藏着不少细节。
第一步:打开终端(命令提示符)
pip是一个命令行工具,不是图形界面软件。你需要在终端里敲命令。
- • Windows:按Win键,输入
cmd或powershell,回车 - • macOS:按
Cmd+空格,输入terminal,回车 - • Ubuntu Linux:点击左下角“显示应用程序”,搜索
terminal
💡 小Tip:终端是黑底白字的窗口,不要害怕,你敲什么它就执行什么。所有pip命令都在这里输入。
1. 验证pip是否已安装——你的第一行pip命令
文字说明
在正式使用pip之前,我们需要确认电脑里已经安装了pip。
Windows和macOS/Linux的命令稍有不同,这是初学者最容易踩坑的地方。
🔧 Windows用户输入:
python -m pip --version
🔧 macOS/Linux用户输入:
python3 -m pip --version
📋 命令详解(非常重要!)
| | |
|---|
python | | Windows下Python命令通常是python,macOS/Linux下通常为python3(区分Python2) |
-m | | 告诉Python“以脚本方式运行一个模块”。这里运行的是pip模块本身 |
pip | | |
--version | | |
整个命令的意思:让Python解释器运行pip模块,并让它输出自己的版本号。
🖥️ 输出结果示例(Windows):
pip 20.2.3 from c:\users\David\appdata\local\programs\python\python39\lib\site-packages\pip (python 3.9)
含义:
- • pip实际存放在这个路径下的
site-packages文件夹——所有第三方包都会装在这里
⚠️ 小Tip(易错点)
如果python3 -m pip --version报错,试试python3.9 -m pip --version(将3.9换成你的具体版本)。Windows用户请始终使用python -m pip,不要用python3。
2. 升级pip——保持工具最新
文字说明
旧版pip可能无法安装某些新包,或者下载速度较慢。建议先升级pip到最新版。
🔧 命令:
python3 -m pip install --upgrade pip
Windows用户记得把python3换成python
📋 命令详解
整个命令的意思:使用pip去安装(并升级)pip本身到最新版本。
🖥️ 输出结果示例(如果已是最新):
Requirement already satisfied: pip in c:\python39\lib\site-packages (20.2.3)
含义:当前已经是最新版,不需要升级。
💡 小Tip:升级pip后,后续所有命令都应该使用升级后的版本。
3. 查看当前已安装的包——pip list
文字说明
刚装好Python时,环境里只有两个最基本的包:pip自己,以及setuptools(pip安装其他包时依赖的工具)。用pip list可以像清单一样列出来。
🔧 命令:
python3 -m pip list
📋 命令详解
整个命令的意思:让pip显示当前Python环境中安装的所有第三方包及其版本号。
🖥️ 输出结果示例(ASCII表格版):
+------------+---------+
| Package | Version |
+------------+---------+
| pip | 19.3.1 |
| setuptools | 41.2.0 |
+------------+---------+
含义:目前环境中只有pip和setuptools两个包。
4. 安装你的第一个第三方包——requests
文字说明
requests是Python最受欢迎的HTTP库,用来向网站发送请求、获取数据。我们用它作为pip安装的入门案例。
🔧 命令:
python3 -m pip install requests
📋 命令详解
整个命令的意思:从PyPI(Python官方包仓库)下载并安装最新版本的requests包。
🖥️ 安装过程中的输出(精简后):
Collecting requests
Downloading requests-2.22.0-py2.py3-none-any.whl (57 kB)
Collecting urllib3>=1.21.1,<1.26,!=1.25.0,!=1.25.1
Downloading urllib3-1.25.7-py2.py3-none-any.whl (125 kB)
Collecting certifi>=2017.4.17
Downloading certifi-2019.11.28-py2.py3-none-any.whl (156 kB)
Collecting chardet>=3.0.2,<3.1.0
Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting idna>=2.5,<2.9
Downloading idna-2.8-py2.py3-none-any.whl (58 kB)
Installing collected packages: urllib3, certifi, chardet, idna, requests
Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.8 requests-2.22.0 urllib3-1.25.7
📋 输出逐行解释
| |
|---|
Collecting requests | |
Downloading ... .whl | 下载了一个.whl文件(wheel格式,预编译的安装包),后面括号是文件大小 |
Collecting urllib3... | |
Installing collected packages | 把下载好的所有包安装到site-packages目录 |
Successfully installed ... | |
关键知识点:
pip会自动处理依赖关系——requests需要urllib3、certifi、chardet、idna才能正常工作,pip把这些包一并下载安装,完全不用你操心。
5. 再次查看已安装的包——见证requests的到来
文字说明
安装完requests之后,再执行pip list,你会发现清单里多了一串新名字。
🔧 命令:
python3 -m pip list
🖥️ 输出结果示例(ASCII表格):
+------------+--------------+
| Package | Version |
+------------+--------------+
| certifi | 2019.11.28 |
| chardet | 3.0.4 |
| idna | 2.8 |
| pip | 19.3.1 |
| requests | 2.22.0 |
| setuptools | 41.2.0 |
| urllib3 | 1.25.7 |
+------------+--------------+
含义:requests及其四个依赖包全部成功安装。
6. 控制版本——安装指定版本的包
文字说明
默认情况下pip install 包名会安装最新版本。但实际项目中,你可能需要固定某个旧版本,或者限制版本范围,以确保代码兼容性。这时就要用到版本说明符。
🔰 6.1 安装大于等于某个版本
python3 -m pip install requests>=2.0
解释:安装requests的最新版,但该版本必须≥2.0。如果当前最新版是3.0,则装3.0。
🔰 6.2 安装小于等于某个版本
python3 -m pip install requests<=3.0
解释:安装requests的最新版,但版本号必须≤3.0。
🔰 6.3 安装严格小于某个版本
python3 -m pip install requests<3.0
解释:安装requests的最新版,但版本号必须小于3.0(不能等于3.0)。
🔰 6.4 安装严格大于某个版本
python3 -m pip install requests>2.0
解释:安装requests的最新版,但版本号必须大于2.0(不能等于2.0)。
🔰 6.5 安装某个具体版本(锁定版本)
python3 -m pip install requests==2.22.0
解释:精确安装2.22.0版本,不会安装更新的版本。
🔰 6.6 组合范围:在1.x系列中取最新
python3 -m pip install "requests>=1.0,<2.0"
解释:安装requests最新版,但必须≥1.0且<2.0。这保证你使用的是1.x系列中的最新修正版。
💡 小Tip:范围组合时建议用双引号包起来,避免终端把<、>误解为重定向符号。
📊 版本说明符对比表
| | | |
|---|
>= | | | >=2.0 |
<= | | | <=3.0 |
> | | | >2.0 |
< | | | <3.0 |
== | | | ==2.22.0 |
!= | | | !=1.25.1 |
重点对比:>=2.0 和 >2.0 的区别——前者包含2.0.0本身,后者不包含。
7. 查看包的详细信息——pip show
文字说明
安装完一个包后,你可能想了解它的作者、主页、依赖了哪些包等信息。pip show就是用来查看包详情的。
🔧 命令:
python3 -m pip show requests
📋 命令详解
🖥️ 输出结果示例:
Name: requests
Version: 2.22.0
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: c:\users\David\...\site-packages
Requires: chardet, idna, certifi, urllib3
Required-by:
📋 输出字段解释
| |
|---|
Name | |
Version | |
Summary | |
Home-page | |
Author | |
License | |
Location | |
Requires | 这个包依赖的其他包 |
Required-by | 哪些包依赖这个包 |
💡 小Tip:Requires和Required-by是两个相反的方向,搞混了容易误解。Requires是“它依赖谁”,Required-by是“谁依赖它”。
8. 卸载包——pip uninstall
文字说明
有安装就有卸载。pip uninstall可以移除不再需要的包。
🔧 命令:
python3 -m pip uninstall requests
📋 命令详解
🖥️ 执行过程与交互:
Uninstalling requests-2.22.0:
Would remove:
c:\users\damos\...\requests-2.22.0.dist-info\*
c:\users\damos\...\requests\*
Proceed (y/n)?
解释:pip列出了将要删除的文件,并询问你是否继续。输入y回车确认。
Successfully uninstalled requests-2.22.0
卸载完成。
关键观察:卸载requests之后,依赖包还在!
再次执行pip list:
python3 -m pip list
🖥️ 输出结果:
+------------+-----------+
| Package | Version |
+------------+-----------+
| certifi | 2018.4.16 |
| chardet | 3.0.4 |
| idna | 2.7 |
| pip | 10.0.1 |
| setuptools | 39.0.1 |
| urllib3 | 1.23 |
+------------+-----------+
注意:requests被删除了,但certifi、chardet、idna、urllib3依然存在。
📘 为什么pip不自动删除依赖包?
因为依赖共享。假设你安装了包A(依赖X)和包B(也依赖X)。如果你只卸载A,pip就把X也删掉,那么B就立刻无法运行了。
所以pip的设计原则是:只删除你明确指定的包,绝不擅自删除可能被其他包共享的依赖。
⚠️ 小Tip(易错点)
不要以为卸载了主包,依赖包也会自动消失。需要手动逐个卸载,或者用一条命令一次性卸载多个包:
python3 -m pip uninstall certifi chardet idna urllib3
这样会一起卸载这四个包。
9. 清理环境——回到原点
文字说明
卸载完所有刚才安装的包后,再运行pip list,你应该只会看到pip和setuptools。
🖥️ 最终输出:
+------------+---------+
| Package | Version |
+------------+---------+
| pip | 10.0.1 |
| setuptools | 39.0.1 |
+------------+---------+
恭喜!你的Python环境恢复到了最干净的状态。
10. 第三方包的“甜蜜陷阱”
文字说明
第三方包给我们带来了巨大的便利,但也带来了三个不可忽视的风险:
- 1. 版本冲突
你今天安装requests 2.22.0跑得好好的,三个月后requests发布了3.0,完全不兼容2.x的写法。新来的同事直接pip install requests,装了个3.0,代码崩溃——你失去了对版本的控制。 - 2. 传递依赖的不可控
你装包A,它自动装了包B 1.0。另一个包C也需要包B,但它需要包B 2.0。pip无法同时满足两个版本,冲突产生。 - 3. 信任问题
你安装的包来自陌生开发者,你无法审查每一行代码。恶意包可能窃取数据、删除文件。
💡 解决方案:虚拟环境
虚拟环境可以为每一个项目创建独立的Python环境,不同项目可以使用不同版本的包,互不干扰。
(虚拟环境在我们练习的时候很少用,如果大家有需要,可以留言,我专门出一篇相关文章。)
11. 本章小结——你已掌握的pip核心技能
| |
|---|
pip --version | |
pip install --upgrade pip | |
pip list | |
pip install 包名 | |
pip install 包名==版本号 | |
pip install "包名>=1.0,<2.0" | |
pip show 包名 | |
pip uninstall 包名 | |
12. 温馨提示
📢 节前暂停更新,我们春节后再见!
祝大家丙午马年新春快乐,🐴 马到成功,万事顺意!
📦 资源获取提示
关注「码农自习室」,后台回复关键词 Python学习,即可获取本文完整代码,一起动手掌握高效编程的核心技巧!
❤️ 支持我们
如果觉得本文对你有帮助,欢迎点赞 + 关注,您的支持是我们持续创作优质内容的最大动力!
📚 学习资源说明
本文内容整理自《Python基础教程(第3版)》第13章,所有命令均已实测。