Python 学习笔记 9:pip 与第三方库安装管理


一、背景

前面几篇已经整理了 Python 的基础语法、函数、模块、文件、异常、面向对象、线程、数据库和 JSON。

实际写 Python 程序时,除了 Python 自带的标准库,还会经常使用别人已经写好的第三方库。

比如:

  1. 使用 requests 发送 HTTP 请求
  2. 使用 pymysql 连接 MySQL
  3. 使用 pandas 处理数据
  4. 使用 flaskdjango 写 Web 服务
  5. 使用 selenium 操作浏览器

这些库不需要自己从头写,一般通过包管理工具安装。

Python 中最常用的包管理工具就是 pip

二、标准库和第三方库

Python 中的库大概可以分为两类。

类型 说明 示例
标准库 安装 Python 后自带 ossysjsondatetimethreading
第三方库 需要额外安装 requestspymysqlpandasflask

标准库可以直接导入:

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)

排查环境问题时,重点看两个信息:

  1. 当前使用的是哪个 Python
  2. 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 依赖目录。

这样可以避免下面这些问题:

  1. 项目 A 需要 requests==2.28.0
  2. 项目 B 需要 requests==2.31.0
  3. 两个项目安装在同一个环境里,版本容易互相影响

十一、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 第三方库安装和依赖管理。

需要重点记住:

  1. 第三方库通常使用 pip 安装
  2. 推荐使用 python -m pip,避免 pip 和 Python 环境不一致
  3. 每个项目尽量使用独立虚拟环境
  4. 使用 requirements.txt 记录项目依赖
  5. 下载慢可以配置镜像源
  6. ModuleNotFoundError 重点检查是否装到了当前 Python 环境
  7. 环境乱了不要硬修,重新建虚拟环境通常更稳

Python 的生态很大,很多功能都可以通过第三方库完成。掌握 pip 和虚拟环境,是后续学习爬虫、数据处理、Web 开发时必须先掌握的基础。


文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
  目录