一、背景
前面几篇已经整理了 Python 的基础语法、函数、模块、文件、异常、面向对象、线程、数据库和 JSON。
实际写 Python 程序时,除了 Python 自带的标准库,还会经常使用别人已经写好的第三方库。
比如:
- 使用
requests发送 HTTP 请求 - 使用
pymysql连接 MySQL - 使用
pandas处理数据 - 使用
flask、django写 Web 服务 - 使用
selenium操作浏览器
这些库不需要自己从头写,一般通过包管理工具安装。
Python 中最常用的包管理工具就是 pip。
二、标准库和第三方库
Python 中的库大概可以分为两类。
| 类型 | 说明 | 示例 |
|---|---|---|
| 标准库 | 安装 Python 后自带 | os、sys、json、datetime、threading |
| 第三方库 | 需要额外安装 | requests、pymysql、pandas、flask |
标准库可以直接导入:
import json
import os
import sys
第三方库如果没有安装,直接导入会报错。
import requests
如果本机没有安装 requests,通常会看到:
ModuleNotFoundError: No module named 'requests'
这时就需要使用 pip 安装。
三、pip 是什么
pip 是 Python 的包安装工具,用来安装、升级、卸载第三方库。
常见命令包括:
pip install requests
pip uninstall requests
pip show requests
pip list
不过在实际使用中,更推荐使用下面这种写法:
python -m pip install requests
原因是:这样可以明确使用当前 python 对应的 pip。
如果机器上同时安装了多个 Python 版本,直接执行 pip 有时会装到另一个 Python 环境里。
四、检查 Python 和 pip
先查看 Python 版本:
python --version
或者:
python3 --version
查看 pip 版本:
python -m pip --version
输出中会包含 pip 版本和对应的 Python 路径,例如:
pip 23.x from .../site-packages/pip (python 3.x)
排查环境问题时,重点看两个信息:
- 当前使用的是哪个 Python
- pip 对应的是哪个 Python
可以使用下面命令查看路径:
which python
which pip
Windows 上可以使用:
where python
where pip
五、安装第三方库
安装一个库:
python -m pip install requests
安装完成后,可以进入 Python 交互环境验证:
python
然后执行:
import requests
print(requests.__version__)
如果没有报错,说明安装成功。
六、指定版本安装
有时项目要求固定版本,可以指定版本安装。
python -m pip install requests==2.31.0
常见版本写法如下:
| 写法 | 含义 |
|---|---|
requests==2.31.0 |
必须安装指定版本 |
requests>=2.28.0 |
安装大于等于指定版本 |
requests<3.0.0 |
安装小于指定版本 |
requests>=2.28.0,<3.0.0 |
指定版本范围 |
如果是学习阶段,可以先不强制指定版本。
如果是项目开发,建议固定版本,避免后面环境变化导致代码运行结果不一致。
七、升级和卸载
升级某个库:
python -m pip install --upgrade requests
卸载某个库:
python -m pip uninstall requests
查看某个库的信息:
python -m pip show requests
查看当前环境已经安装的库:
python -m pip list
查看哪些库可以升级:
python -m pip list --outdated
八、使用国内镜像源
有时直接访问默认源比较慢,可以临时使用国内镜像。
例如使用清华源:
python -m pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
也可以使用阿里云源:
python -m pip install requests -i https://mirrors.aliyun.com/pypi/simple/
如果使用镜像源时出现可信主机问题,可以加上:
python -m pip install requests \
-i https://pypi.tuna.tsinghua.edu.cn/simple \
--trusted-host pypi.tuna.tsinghua.edu.cn
一般情况下,使用 https 镜像地址不需要额外加 --trusted-host。
九、配置默认镜像源
如果经常使用同一个镜像源,可以配置成默认值。
Linux 或 macOS 下,配置文件通常是:
~/.pip/pip.conf
内容示例:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
Windows 下,配置文件一般是:
%APPDATA%\pip\pip.ini
也可以使用命令配置:
python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
查看当前 pip 配置:
python -m pip config list
十、虚拟环境
不建议把所有项目依赖都安装到系统 Python 中。
更推荐每个项目使用独立虚拟环境。
虚拟环境的作用是:给每个项目创建一套相对独立的 Python 依赖目录。
这样可以避免下面这些问题:
- 项目 A 需要
requests==2.28.0 - 项目 B 需要
requests==2.31.0 - 两个项目安装在同一个环境里,版本容易互相影响
十一、venv 创建虚拟环境
Python3 自带 venv 模块。
创建虚拟环境:
python -m venv .venv
激活虚拟环境。
Linux 或 macOS:
source .venv/bin/activate
Windows:
.venv\Scripts\activate
激活后再安装依赖:
python -m pip install requests
退出虚拟环境:
deactivate
十二、确认库安装到了哪个环境
很多 ModuleNotFoundError 都是因为库装错了环境。
排查时可以看下面几个命令:
which python
python -m pip --version
python -m pip show requests
也可以在 Python 中查看:
import sys
print(sys.executable)
print(sys.path)
如果 pip install 成功,但是代码还是提示找不到模块,大概率是运行代码时使用的 Python 和安装库时使用的 Python 不是同一个。
十三、requirements.txt
项目中通常会使用 requirements.txt 记录依赖。
生成当前环境依赖:
python -m pip freeze > requirements.txt
文件内容大概如下:
requests==2.31.0
pymysql==1.1.0
在另一台机器上安装:
python -m pip install -r requirements.txt
这样可以比较方便地复现项目依赖环境。
需要注意:pip freeze 会导出当前环境中的所有包。如果当前环境很乱,生成的 requirements.txt 也会很乱。
所以最好在干净的虚拟环境中维护项目依赖。
十四、安装本地包和 wheel 文件
有时依赖包不是从远程源安装,而是从本地文件安装。
安装本地 wheel 文件:
python -m pip install xxx.whl
安装本地源码目录:
python -m pip install .
开发本地包时,可以使用可编辑安装:
python -m pip install -e .
-e 表示 editable,适合一边开发包代码,一边在项目中引用。
十五、常见问题
1. No module named xxx
报错:
ModuleNotFoundError: No module named 'xxx'
排查步骤:
python -m pip show xxx
python -c "import sys; print(sys.executable)"
python -m pip --version
重点确认安装依赖和运行代码是否使用同一个 Python。
2. pip 不是内部或外部命令
Windows 上如果提示找不到 pip,可以先尝试:
python -m pip --version
如果这个命令可以执行,就不需要直接使用 pip 命令。
3. 权限不足
如果安装时报权限问题,不建议直接对系统 Python 乱加权限。
优先使用虚拟环境:
python -m venv .venv
source .venv/bin/activate
python -m pip install requests
如果确实要安装到用户目录,可以使用:
python -m pip install --user requests
4. 下载太慢
可以临时指定镜像:
python -m pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
5. 版本冲突
如果出现依赖版本冲突,可以先查看当前依赖:
python -m pip list
python -m pip check
pip check 会检查已安装包之间是否存在依赖不兼容。
如果环境已经很乱,很多时候重新创建一个干净虚拟环境比继续修更省时间。
十六、日常推荐流程
一个比较常用的项目依赖管理流程如下:
# 1. 创建项目目录
mkdir demo-python
cd demo-python
# 2. 创建虚拟环境
python -m venv .venv
# 3. 激活虚拟环境
source .venv/bin/activate
# 4. 升级 pip
python -m pip install --upgrade pip
# 5. 安装依赖
python -m pip install requests pymysql
# 6. 记录依赖
python -m pip freeze > requirements.txt
其他机器拉取项目后:
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
十七、总结
这一篇主要整理了 Python 第三方库安装和依赖管理。
需要重点记住:
- 第三方库通常使用
pip安装 - 推荐使用
python -m pip,避免 pip 和 Python 环境不一致 - 每个项目尽量使用独立虚拟环境
- 使用
requirements.txt记录项目依赖 - 下载慢可以配置镜像源
ModuleNotFoundError重点检查是否装到了当前 Python 环境- 环境乱了不要硬修,重新建虚拟环境通常更稳
Python 的生态很大,很多功能都可以通过第三方库完成。掌握 pip 和虚拟环境,是后续学习爬虫、数据处理、Web 开发时必须先掌握的基础。