Python pip命令基础用法:安装、卸载与更新库

陆遥
陆遥
发布时间:2026-10-31 | 6人浏览过
原创

全面讲解Python包管理工具pip的基础使用方法,涵盖安装第三方库、指定版本、升级包、卸载库以及使用镜像源加速与requirements.txt批量管理的完整操作与排错要点。

在本地终端运行一段刚写好的 Python 数据抓取脚本时,终端突然打印出 ModuleNotFoundError: No module named 'requests'。这个报错是初学者在编写 Python 代码时最常遇到的提示。Python 语言自带了丰富的内置标准库,但庞大的第三方生态(如数据处理、网络请求、科学计算库)并不包含在解释器安装包内。解决这个问题的直接途径,就是使用 Python 官方自带的软件包管理器 —— pip。

一、pip 的工作定位与运行机制

pip(全称 Pip Installs Packages)是 Python 生态中标准的软件包管理工具,在 Python 3.4 及以后的版本中默认随解释器一同打包提供。它的主要职责是根据开发者的指令,从远端软件仓库中检索、下载、解包并部署第三方库,同时自动计算并安装该库所依赖的其他底层包。

当你在控制台执行安装指令时,pip 会连接 Python 官方软件包索引仓库(PyPI,即 Python Package Index)或开发者指定的国内镜像源,找到目标包的元数据,下载 .whl(Wheel 预编译格式)或 .tar.gz 源码分发包,并在完成哈希与安全校验后,将其解压复制到当前 Python 环境的 site-packages 目录下。完成此步骤后,代码中的 import 语句便能立即识别并加载对应模块。

Python pip命令基础用法:安装、卸载与更新库
图 1:pip 从远端源检索、解析依赖并部署至本地 Python 环境的标准流向

二、核心操作:安装第三方库(pip install)

安装库是 pip 最频繁的操作。虽然多数教程写为 pip install 包名,但在实际开发环境中,更严谨、更推荐的写法始终是 python -m pip install 包名。

为什么推荐使用 python -m pip?

在许多开发者的操作系统中,往往同时存在多个 Python 解释器(例如系统自带 Python 3.9,自行安装的 Python 3.11,或者 Conda/虚拟环境)。直接在终端敲 pip 时,系统会依赖环境变量 PATH 的先后顺序去寻找 pip 执行文件,容易将库安装到另一个非预期的 Python 路径中。通过 python -m pip,可以精准确保调用的是当前敲下 python 命令所对应的那个解释器。

1. 基础安装最新稳定版

要安装某个公共库的最新稳定版本,直接提供库名即可:

执行命令
python -m pip install requests
示例终端输出
Collecting requests
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
Collecting charset-normalizer<4,>=2
  Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.whl (142 kB)
Collecting idna<4,>=2.5
  Downloading idna-3.7-py3-none-any.whl (66 kB)
Collecting urllib3<3,>=1.21.1
  Downloading urllib3-2.2.1-py3-none-any.whl (121 kB)
Collecting certifi>=2017.4.17
  Downloading certifi-2024.2.2-py3-none-any.whl (163 kB)
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2024.2.2 charset-normalizer-3.3.2 idna-3.7 requests-2.31.0 urllib3-2.2.1

从终端反馈可以看到,pip 不仅下载了 requests,还自动识别并安装了它所需的底层支持库:urllib3、idna、charset-normalizer 和 certifi。最后一行显示 Successfully installed 即代表安装成功。

2. 精确指定与限定版本

在实际项目协作或部署时,随意安装最新版可能会导致代码因为新版本的不兼容改动(Breaking Changes)而崩溃。pip 支持丰富的版本限定符号:

  • 精确指定版本:使用 ==,例如 python -m pip install requests==2.28.2。
  • 版本范围限制:使用比较运算符,例如 python -m pip install "requests>=2.25.0,<3.0.0"(在终端中使用双引号包裹,防止字符 >、< 被 Shell 误识别为重定向符号)。
  • 兼容版本规范:使用 ~=,例如 python -m pip install "requests~=2.28.0",等同于 >= 2.28.0, == 2.28.*,允许安装 2.28 的补丁修正版本,但不升级主次版本。

3. 使用国内镜像源加速下载

由于 PyPI 官方服务器位于海外,国内访问时可能遇到下载速度极慢或连接超时(ReadTimeoutError)。可以在安装时加上 -i 参数指定国内镜像源:

临时指定镜像源命令
python -m pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

如果不想每次都手动输入长链接,可以使用以下命令为当前用户永久配置全局镜像源:

永久配置镜像源命令
python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
示例终端输出
Writing to /Users/username/.config/pip/pip.conf
Python pip命令基础用法:安装、卸载与更新库
图 2:pip install 核心语法结构及四种典型版本约束方式

4. 批量依赖管理(requirements.txt)

真实工程项目通常依赖数十个第三方库,手动逐一安装极易出错。Python 社区通用规范是使用 requirements.txt 文件记录依赖清单。

例如,在项目根目录创建 requirements.txt,内容示例如下:

requests==2.31.0
numpy>=1.24.0,<2.0.0
flask~=2.3.0

在新的机器或环境中,只需运行一条命令即可一键完成全部依赖安装:

执行批量安装命令
python -m pip install -r requirements.txt

三、查看与验证已安装的库(pip list 与 pip show)

执行完安装命令后,如何确认包是否已经正确就位,以及它的安装目录在哪里?pip 提供了两组专门用于环境查询的子命令。

1. 概览全部已安装包:pip list

pip list 会以表格形式列出当前 Python 环境下所有已安装的包及其版本号:

执行查询命令
python -m pip list
示例终端输出
Package            Version
------------------ ---------
certifi            2024.2.2
charset-normalizer 3.3.2
idna               3.7
pip                24.0
requests           2.31.0
setuptools         69.5.1
urllib3            2.2.1

2. 细查特定包的详细元信息:pip show

如果需要排查某个具体包的安装路径、依赖关系或作者信息,使用 pip show 包名:

执行信息查看命令
python -m pip show requests
示例终端输出
Name: requests
Version: 2.31.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: /Users/username/myproject/.venv/lib/python3.10/site-packages
Requires: certifi, charset-normalizer, idna, urllib3
Required-by: 

输出中有两个关键字段极其重要:

  • Location:该库在文件系统中的真实绝对路径。若在编辑器中遇到模块导入标红或找不到定义,可以核对该路径是否在 IDE 的解释器索引范围内。
  • Requires 与 Required-by:展示依赖树关系。Requires 说明当前库运行时必须依赖哪些基础包;Required-by 说明当前库被哪些其他上层包所依赖。

3. 冻结导出当前环境清单:pip freeze

当项目在本地开发测试无误后,可以使用 freeze 命令将当前环境中所有包及其精确锁定版本导出为文本:

执行导出命令
python -m pip freeze > requirements.txt

这会生成一个包含所有直接依赖和间接依赖的文件,确保团队其他成员或生产服务器能够还原出完全一致的运行环境。

四、更新第三方库(pip install --upgrade)

开源库会持续发布新版本以修补漏洞、提升性能或引入新特性。若要将某个已安装的库提升至最新版本,需要使用 --upgrade 选项(可简写为 -U)。

1. 升级指定库

执行升级命令
python -m pip install --upgrade requests
示例终端输出
Requirement already satisfied: requests in ./lib/python3.10/site-packages (2.28.0)
Collecting requests
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
...
Attempting uninstall: requests
  Found existing installation: requests 2.28.0
  Uninstalling requests-2.28.0:
    Successfully uninstalled requests-2.28.0
Successfully installed requests-2.31.0

在执行升级时,pip 会先下载新版本,随后安全卸载旧版本并挂载新版本。如果在运行命令时该库已经是最新版本,终端则会直接输出 Requirement already satisfied,不会重复下载。

2. 查看当前环境中所有待更新的库

使用 pip list --outdated(或 -o)可以快速扫描本地有哪些包落后于 PyPI 上的最新版本:

执行检测命令
python -m pip list --outdated
示例终端输出
Package  Version Latest Type
-------- ------- ------ -----
urllib3  1.26.18 2.2.1  wheel

3. 升级 pip 自身

pip 自身也是一个 Python 包,定期升级 pip 可以获得更高效的依赖解析算法和更完善的安全性支持:

升级 pip 命令
python -m pip install --upgrade pip
Python pip命令基础用法:安装、卸载与更新库
图 3:pip 管理第三方库的四阶段标准操作流程

五、安全卸载第三方库(pip uninstall)

当项目不再需要某个库,或需要彻底清理后重装排错时,使用 pip uninstall 命令进行移除。

1. 交互式卸载与跳过确认

默认情况下,pip 执行卸载时会先列出所有即将被删除的文件路径,并停留在终端等待用户输入 y 进行二次确认:

执行卸载命令
python -m pip uninstall requests
示例终端输出
Found existing installation: requests 2.31.0
Uninstalling requests-2.31.0:
  Would remove:
    /Users/username/.venv/lib/python3.10/site-packages/requests-2.31.0.dist-info/*
    /Users/username/.venv/lib/python3.10/site-packages/requests/*
Proceed (Y/n)? y
  Successfully uninstalled requests-2.31.0

若在自动化脚本或持续集成(CI)流水线中执行卸载,必须添加 -y(或 --yes)参数以静默跳过人工交互确认:

免确认卸载命令
python -m pip uninstall requests -y

2. 卸载操作的重要注意事项

关于间接依赖项(Sub-dependencies)的清理

必须注意:pip uninstall requests 只会删除 requests 本身,不会自动级联卸载因它而安装的子依赖项(如 urllib3、certifi 等)。这是 pip 为防止误删其他项目可能仍需使用的依赖而采取的保守设计。如果需要完全重置或保持环境绝对干净,最推荐的工程做法是:销毁并重建该项目的独立虚拟环境。

六、避坑指南与最佳实践对比

虽然 pip 的基础指令直观易学,但在日常多项目开发中,如果使用姿势不当,极易出现“明明安装成功却依旧报 No module named”、“权限不足”或“版本冲突”等问题。掌握以下四项原则能规避绝大多数常见故障。

常见问题场景 根本原因 推荐解决方案
安装后仍提示 ModuleNotFoundError 多 Python 版本并存,终端执行的 pip 与运行脚本的 python 不属于同一环境。 统一使用 python -m pip install,或在激活的虚拟环境中执行。
Permission denied 权限报错 尝试将包安装到受系统保护的全局只读系统目录下。 使用虚拟环境,或附加 --user 参数安装至当前用户的主目录。
下载速度极慢或 ReadTimeout 直连官方 PyPI 节点受网络波动限制。 添加 -i https://pypi.tuna.tsinghua.edu.cn/simple 镜像源加速。
依赖冲突与环境污染 所有项目共用全局环境,各项目对同一库的版本需求不同。 为每个项目创建独立的虚拟环境(python -m venv .venv)。
Python pip命令基础用法:安装、卸载与更新库
图 4:直接执行 pip 与 python -m pip 的环境寻址机制对比及常用命令速查

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表