Article

包管理器 Pip

更新于:2026-07-13

第一章:pip 基础概念

1.1 什么是 pip

概念名称说明注意事项
pippip 是 Python 的官方包管理工具,用于从 Python Package Index(PyPI)等源安装、升级、卸载和管理第三方库。自 Python 3.4+ 和 Python 2.7.9+ 起,pip 默认随 Python 一同安装。
PyPI(Python Package Index)官方的 Python 软件包仓库,托管了数十万个开源 Python 包,pip 默认从此源下载包。公共 PyPI 地址为 https://pypi.org/,国内可使用镜像加速(如清华、阿里云)。
包(Package)一个包含 Python 模块、脚本、元数据等的可分发单元,通常通过 setup.py 或 pyproject.toml 定义。pip 安装的是”分发包”(distribution package),不是项目源码本身。

1.2 pip 的作用与优势

概念名称说明注意事项
自动依赖解析pip 在安装包时会自动下载并安装其声明的依赖项。早期版本(<20.3)依赖解析能力较弱,可能安装不兼容版本;建议使用 pip ≥20.3。
版本控制支持支持安装指定版本、版本范围、最新版或开发版的包。使用 ==>=<=~= 等操作符可精确控制版本。
跨平台兼容在 Windows、macOS、Linux 等系统上均可使用相同命令。某些包含 C 扩展(如 numpy),需对应平台的编译环境或预编译 wheel。
与虚拟环境集成可配合 venv、virtualenv 等工具实现隔离的依赖环境。强烈建议在虚拟环境中使用 pip,避免污染全局 Python 环境。
命令行简洁提供直观的命令如 install、uninstall、list 等,学习成本低。不支持复杂项目管理(如多环境配置、构建流程),需配合其他工具。

1.3 pip 与其他包管理工具的对比(如 conda、poetry)

工具名称所属类别用途与 pip 的主要区别适用场景
pipPython 专用包管理器安装 PyPI 上的 Python 包仅管理 Python 包,不处理非 Python 依赖(如 C 库、编译器)纯 Python 项目、轻量级依赖管理
conda跨语言环境与包管理器管理 Python 包及非 Python 依赖(如 NumPy 的 MKL、CUDA)自建仓库(Anaconda/Miniconda),可创建独立环境并管理二进制依赖数据科学、机器学习、需要非 Python 依赖的项目
poetryPython 项目与依赖管理工具管理依赖、构建、发布、虚拟环境一体化使用 pyproject.toml 替代 requirements.txt,提供 lock 文件确保可复现性中大型 Python 项目、需要严格依赖锁定和发布流程的团队
pipenvpip + virtualenv 的整合工具(已不推荐)自动创建虚拟环境并管理 Pipfile曾试图统一依赖与环境管理,但维护停滞,官方推荐 poetry 或直接用 pip + venv遗留项目,新项目不建议使用

注意事项:

  • pip 专注于”安装包”,而 conda/poetry 更偏向”项目生命周期管理”。
  • pip 不能替代 conda 处理非 Python 依赖(如 HDF5、OpenSSL 等系统库)。
  • poetry 虽强大,但学习曲线高于 pip,小型脚本项目无需引入。

第二章:pip 安装与配置

2.1 安装 pip

方法名称语法用途代码示例注意事项
通过 ensurepip 模块安装python -m ensurepippython -m ensurepip --upgrade在已安装 Python 但未安装 pip 的系统中启用 pippython -m ensurepip --default-pip适用于 Python ≥2.7.9 或 ≥3.4;部分 Linux 发行版需先安装 python3-venv 等包
通过 get-pip.py 脚本安装curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py通用安装方式,适用于所有支持的 Python 版本python get-pip.py
python get-pip.py --user
需确保网络可访问 PyPA;建议使用 --user 避免权限问题;注意脚本来源安全性
通过系统包管理器安装sudo apt install python3-pip(Debian/Ubuntu)利用操作系统包管理器安装 pipsudo yum install python3-pip(CentOS/RHEL)
brew install python(macOS,自动含 pip)
可能安装较旧版本;不推荐用于生产环境或需要最新 pip 的场景

2.2 升级 pip

方法名称语法用途代码示例注意事项
使用 pip 自身升级python -m pip install --upgrade pip将当前环境中的 pip 升级到最新版python -m pip install --upgrade pip推荐使用 python -m pip 而非直接 pip,避免路径混淆
指定用户目录升级python -m pip install --upgrade --user pip在用户目录下升级 pip(无需管理员权限)python -m pip install --upgrade --user pip适用于无 sudo 权限的共享服务器环境
使用特定 Python 版本升级python3.11 -m pip install --upgrade pip为特定 Python 版本升级其对应的 pippython3.9 -m pip install --upgrade pip多版本 Python 共存时必须明确指定解释器

注意事项:

  • Windows 用户若遇”拒绝访问”错误,可尝试在 PowerShell 中以管理员身份运行,或使用 --user
  • 升级后建议验证版本:python -m pip --version

2.3 配置 pip(配置文件、镜像源、代理等)

配置项操作细节注意事项
配置文件位置Linux/macOS: ~/.pip/pip.conf~/.config/pip/pip.conf
Windows: %APPDATA%\pip\pip.ini
若目录不存在需手动创建;全局配置位于 /etc/pip.conf(Linux)
设置国内镜像源在配置文件中添加:[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
常用镜像:
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:https://mirrors.aliyun.com/pypi/simple/
- 豆瓣:http://pypi.douban.com/simple/
临时使用镜像pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name仅对单次命令生效,适合临时加速
配置 HTTP/HTTPS 代理在配置文件中添加:[global]
proxy = http://user:pass@proxy.server:port
若代理无需认证,格式为 http://proxy.server:port;注意区分 http 与 https 代理
禁用缓存pip install --no-cache-dir package_name 或在配置文件中设置 no-cache-dir = true可解决因缓存导致的安装失败,但会增加下载时间
设置超时时间pip install --timeout 100 package_name 或配置 timeout = 100默认超时为 15 秒,网络慢时可适当调高

配置文件完整示例(~/.pip/pip.conf):

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
timeout = 60
no-cache-dir = false

[install]
user = true

注意事项:

  • 修改配置文件后无需重启,pip 会自动读取。
  • trusted-host 必须包含镜像域名,否则 HTTPS 验证可能失败。
  • 在 CI/CD 环境中,建议通过命令行参数而非配置文件设置镜像,便于复现。

第三章:基本包管理操作

3.1 安装包

方法名称语法用途代码示例注意事项
安装最新版包pip install package_name从 PyPI 安装指定包的最新版本pip install requests默认安装到当前 Python 环境;建议在虚拟环境中操作
安装指定版本pip install package_name==version安装特定版本的包pip install django==4.2.7版本号需与 PyPI 上发布的一致
安装版本范围pip install "package_name>=1.0,<2.0"安装满足版本范围的包pip install "numpy>=1.20,<1.25"需用引号包裹(防止 shell 解析 < >
强制重装pip install --force-reinstall package_name忽略已安装状态,重新下载并安装pip install --force-reinstall flask不会自动升级依赖,仅重装目标包
忽略依赖安装pip install --no-deps package_name仅安装包本身,不安装其依赖pip install --no-deps pandas可能导致运行时 ImportError,慎用
安装到用户目录pip install --user package_name安装到用户 site-packages,无需管理员权限pip install --user jupyter适用于无 sudo 权限的环境;路径通常为 ~/.local/lib/pythonX.X/site-packages

3.2 卸载包

方法名称语法用途代码示例注意事项
卸载单个包pip uninstall package_name移除已安装的包及其文件pip uninstall requests会提示确认,加 -y 可跳过确认
卸载多个包pip uninstall package1 package2同时卸载多个包pip uninstall numpy scipy所有包必须已安装,否则报错
静默卸载pip uninstall -y package_name自动确认卸载,不交互pip uninstall -y flask适用于脚本或 CI/CD 流程
仅卸载不删除依赖(无直接选项)pip 卸载不会自动移除依赖包pip uninstall myapp即使依赖不再被使用,也不会自动清理,需手动处理

注意事项:

  • 卸载操作不可逆,但可通过重新安装恢复。
  • 若包通过系统包管理器(如 apt)安装,pip 无法卸载。

3.3 查看已安装包

方法名称语法用途代码示例注意事项
列出所有已安装包pip list显示当前环境中所有包及其版本pip list输出格式:Package Version
列出可升级的包pip list --outdated显示有新版本可用的包pip list --outdated包含当前版本、最新版本、位置等信息
以 freeze 格式列出pip freeze生成 requirements.txt 兼容格式pip freeze > requirements.txt仅包含通过 pip 安装的包,不含 editable 安装的额外信息
列出特定包详情pip show package_name显示包的元数据(见 3.5 节)pip show requests不属于本小节核心,但常配合使用

注意事项:

  • pip list 包含所有包(包括依赖),pip freeze 更适合生成依赖文件。
  • 在虚拟环境中运行可避免全局包干扰。

3.4 升级包

方法名称语法用途代码示例注意事项
升级单个包pip install --upgrade package_namepip install -U package_name将包升级到最新兼容版本pip install -U requests会同时升级其依赖(若必要)
升级所有包(无原生命令)pip 不支持一键升级所有包需借助脚本:pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U官方不推荐批量升级,易引发依赖冲突
仅升级包本身(不升级依赖)pip install --upgrade --no-deps package_name升级目标包,保留旧依赖pip install --upgrade --no-deps django可能导致兼容性问题,需谨慎

注意事项:

  • 升级前建议备份环境(如导出 pip freeze > backup.txt)。
  • 使用 --upgrade-strategy only-if-needed(默认)可减少不必要的依赖升级。

3.5 查看包信息

方法名称语法用途代码示例注意事项
显示包元数据pip show package_name查看包的名称、版本、摘要、作者、依赖等信息pip show numpy输出字段包括:Name, Version, Summary, Home-page, Author, License, Location, Requires 等
显示依赖树(需额外工具)pip show 不支持依赖树原生 pip 无法显示完整依赖关系建议使用 pipdeptree 工具:pip install pipdeptree
pipdeptree
pip show 的 “Requires” 仅列出直接依赖
检查包是否已安装pip show package_name + 判断返回码若包未安装,命令返回非零退出码pip show flask >/dev/null && echo "Installed"可用于 shell 脚本判断

pip show 示例输出字段说明:

  • Location:包安装路径
  • Requires:该包直接依赖的其他包(不递归)
  • Required-by:哪些已安装包依赖此包(反向依赖)

注意事项:

  • pip show 仅对已安装包有效,未安装包会报错。
  • 如需更详细的依赖分析,应使用 pipdeptree 或 pip-tools。

第四章:依赖管理与 requirements

4.1 生成 requirements.txt

方法名称语法用途代码示例注意事项
使用 pip freeze 导出pip freeze > requirements.txt将当前环境中所有通过 pip 安装的包及其精确版本写入文件pip freeze > requirements.txt包含所有依赖(包括间接依赖),适合生产环境复现
手动编写 requirements.txt直接编辑文本文件仅列出项目直接依赖,不锁定子依赖版本文件内容示例:
requests>=2.25.0
flask~=2.3.0
适用于开发环境或希望灵活升级依赖的场景
使用 pip-tools 生成(推荐)pip-compile requirements.in基于高层依赖声明生成带完整依赖树的锁定文件echo "flask" > requirements.in
pip-compile requirements.in
需先安装 pip install pip-tools;生成 requirements.txt 含哈希和注释

注意事项:

  • pip freeze 会包含测试工具(如 pytest)、开发工具等,建议在纯净虚拟环境中生成。
  • 不要将 pip freeze 输出用于库(library)项目,而应仅用于应用(application)项目。
  • requirements.in + pip-compile 是更现代、可维护的方式。

4.2 从 requirements.txt 安装依赖

方法名称语法用途代码示例注意事项
安装依赖文件中的所有包pip install -r requirements.txt按文件中列出的包和版本进行安装pip install -r requirements.txt支持相对路径和 URL(如 -r https://example.com/reqs.txt
安装并忽略已安装包pip install --ignore-installed -r requirements.txt强制重新安装所有包pip install --ignore-installed -r requirements.txt耗时较长,通常用于修复损坏环境
安装到用户目录pip install --user -r requirements.txt将依赖安装到用户 site-packagespip install --user -r requirements.txt适用于无管理员权限的服务器环境
使用镜像加速安装pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt从国内镜像源安装依赖pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt可大幅提高下载速度,尤其在国内网络环境

注意事项:

  • 若 requirements.txt 中包含 -e .(可编辑安装),需确保当前目录是有效 Python 项目。
  • 安装失败时,可加 -v(verbose)查看详细日志。

4.3 冻结依赖环境

概念/操作名称说明注意事项
依赖冻结(Dependency Freezing)将项目所有依赖(包括间接依赖)固定到具体版本,确保环境可复现是生产部署的最佳实践
冻结命令pip freeze > requirements.txt生成的文件包含所有包的精确版本(如 requests==2.31.0
冻结 vs 声明声明:只写直接依赖(如 flask
冻结:包含完整依赖树(如 flask==2.3.3, werkzeug==2.3.7
库项目应只声明直接依赖;应用项目应冻结全部依赖
使用哈希增强安全性pip freeze --all --format=freeze 不支持哈希;需用 pip-tools 或 pip hash 手动添加现代做法:使用 pip-compile --generate-hashes 生成带哈希校验的 requirements

最佳实践:

  • 开发时使用宽松依赖(如 requirements-dev.in
  • 构建时生成冻结文件(如 requirements.txt
  • 部署时使用冻结文件安装

4.4 虚拟环境与 pip 配合使用

操作步骤名称操作细节注意事项
创建虚拟环境python -m venv myenvPython 3.3+ 内置 venv;替代方案:virtualenv
激活虚拟环境Linux/macOS: source myenv/bin/activate
Windows (CMD): myenv\Scripts\activate
Windows (PowerShell): myenv\Scripts\Activate.ps1
激活后命令行前缀显示 (myenv),表示当前环境已切换
在虚拟环境中使用 pip激活后直接运行 pip install package所有包将安装到 myenv/lib/pythonX.X/site-packages/,不影响全局
停用虚拟环境deactivate返回系统默认 Python 环境
删除虚拟环境直接删除整个 myenv 文件夹无需特殊卸载命令,因其为独立目录

配合流程示例:

python -m venv venv
source venv/bin/activate    # Linux/macOS
pip install -r requirements.txt
# 开发或运行项目
deactivate

注意事项:

  • 永远不要在全局 Python 环境中直接使用 pip 安装项目依赖。
  • 虚拟环境本身不含 pip?可通过 python -m ensurepip 补装。
  • 在 CI/CD 中,每次构建都应创建新虚拟环境以保证干净状态。

第五章:高级功能与技巧

5.1 安装特定版本或开发版本

方法名称语法用途代码示例注意事项
安装精确版本pip install package==version安装指定确切版本pip install django==4.2.7版本必须存在于 PyPI 或指定源中
安装兼容版本(~=pip install "package~=1.4.0"安装兼容的次版本(等价于 >=1.4.0, ==1.4.*pip install "requests~=2.28.0"适用于语义化版本控制(SemVer)
安装预发布版本pip install --pre package允许安装 alpha/beta/rc 等预发布版pip install --pre numpy默认 pip 忽略预发布版本
安装开发版本(main 分支)pip install git+https://github.com/user/repo.git从 Git 主分支安装最新开发版pip install git+https://github.com/psf/requests.git需目标仓库包含 setup.py 或 pyproject.toml
安装特定 Git 提交/标签/分支pip install git+https://github.com/user/repo.git@branch_or_tag_or_commit安装指定 Git 引用的版本pip install git+https://github.com/django/django.git@stable/4.2.x
pip install git+https://github.com/user/repo.git@v1.2.3
支持 commit hash、tag、branch 名称

注意事项:

  • 预发布版本可能不稳定,仅用于测试。
  • Git 安装需系统已安装 Git,并能访问对应仓库(私有库需配置 SSH 或 token)。

5.2 从本地或 Git 安装包

方法名称语法用途代码示例注意事项
从本地目录安装(可编辑模式)pip install -e /path/to/package以”开发模式”安装本地项目,源码修改立即生效pip install -e ./myproject要求目录含 setup.py 或 pyproject.toml;常用于开发自己的包
从本地目录安装(普通模式)pip install /path/to/package复制并安装本地包,不关联源码pip install ./dist/myproject-1.0.tar.gz适用于分发后的源码包或 wheel 文件
从本地 wheel 文件安装pip install package-1.0-py3-none-any.whl安装预构建的 wheel 包pip install mylib-0.1.0-py3-none-any.whlwheel 文件可通过 python setup.py bdist_wheel 生成
从 Git 安装(HTTPS)pip install git+https://github.com/user/repo.git从公开 Git 仓库安装pip install git+https://github.com/pallets/flask.git若仓库较大,首次安装较慢
从 Git 安装(SSH)pip install git+ssh://git@github.com/user/repo.git从私有 Git 仓库安装(需 SSH 密钥)pip install git+ssh://git@github.com/myorg/private-lib.git需提前配置好 SSH 认证

注意事项:

  • -e(editable)安装会在 site-packages 中创建 .egg-link 文件指向源码目录。
  • 本地路径支持相对路径(如 .../lib)和绝对路径。
  • Git URL 必须以 git+ 开头,否则 pip 无法识别为 VCS 链接。

5.3 使用 —user、—target 等安装选项

选项名称语法用途代码示例注意事项
--userpip install --user package将包安装到用户目录(~/.local/pip install --user jupyter无需管理员权限;适用于共享服务器
--target DIRpip install --target ./mylibs package将包安装到指定目录(非标准 site-packages)pip install --target ./vendor requests常用于打包应用(如 AWS Lambda);需手动将该目录加入 PYTHONPATH
--prefix DIRpip install --prefix ./install_root package指定安装前缀(类似 Unix 的 /usr/localpip install --prefix /opt/myapp package实际安装路径为 DIR/lib/pythonX.X/site-packages
--root DIRpip install --root /tmp/stage --prefix=/opt/app package用于打包阶段,模拟安装到根目录pip install --root /tmp/build --prefix=/usr/local flask常用于 Debian/RPM 包构建流程
--no-user-cfgpip install --no-user-cfg package忽略用户级 pip 配置文件pip install --no-user-cfg -i https://pypi.org/simple/ package用于确保配置一致性(如 CI 环境)

注意事项:

  • --target 不会自动处理依赖路径,需确保所有依赖也安装到同一目录或 PYTHONPATH 中。
  • --user 在虚拟环境中无效(会被忽略),因虚拟环境本身已是隔离空间。

5.4 pip 缓存机制

概念/操作名称说明注意事项
缓存位置Linux: ~/.cache/pip
macOS: ~/Library/Caches/pip
Windows: %LOCALAPPDATA%\pip\Cache
存储下载的 wheel 和源码包
查看缓存信息pip cache dir显示当前缓存目录路径
列出缓存内容pip cache info显示缓存大小和文件数量
清除全部缓存pip cache purge删除所有缓存文件
清除特定包缓存(无直接命令)需手动删除对应目录
禁用缓存pip install --no-cache-dir package单次命令禁用缓存
启用缓存(默认)无需参数pip 默认启用缓存以加速重复安装

最佳实践:

  • CI/CD 中建议使用 --no-cache-dir 避免缓存污染。
  • 本地开发可保留缓存以加快重装速度。

5.5 pip 下载而不安装

方法名称语法用途代码示例注意事项
下载 wheel 或源码包pip download package将包及其依赖下载到当前目录,不安装pip download requests默认下载最优格式(优先 wheel)
指定下载目录pip download -d ./wheels package将包下载到指定目录pip download -d ./deps flask目录需存在,否则报错
仅下载 wheelpip download --only-binary=:all: package强制只下载 wheel 格式pip download --only-binary=:all: numpy若无 wheel 可用则失败
允许源码包回退pip download --prefer-binary package优先 wheel,无则下载源码pip download --prefer-binary pandas默认行为即为此模式
从 requirements 下载pip download -r requirements.txt -d ./offline批量下载依赖用于离线安装pip download -r requirements.txt -d ./offline_pkgs常用于内网或无外网环境部署
离线安装已下载包pip install --no-index --find-links ./offline package从本地目录安装pip install --no-index --find-links ./offline_pkgs -r requirements.txt需配合 --no-index 禁用 PyPI

注意事项:

  • pip download 会解析并下载完整依赖树。
  • 下载的包可用于 pip install --find-links 离线安装。
  • 离线部署时,建议在目标平台相同架构/Python 版本下下载,避免 wheel 不兼容。

第六章:常见问题与故障排查

6.1 权限错误(PermissionError)

问题现象操作细节注意事项
安装包时提示 Permission denied 或 PermissionError: [Errno 13]1. 使用 --user 选项安装到用户目录:pip install --user package_name
2. 在虚拟环境中操作(推荐):python -m venv venv && source venv/bin/activate && pip install package
3. 避免使用 sudo pip(不安全且易污染系统 Python)
sudo pip 可能导致系统包管理器(如 apt)与 pip 冲突
虚拟环境是最佳实践,完全隔离依赖
若必须全局安装,应使用系统包管理器(如 apt install python3-requests)而非 pip
Windows 上提示”Access is denied”1. 以管理员身份运行命令提示符或 PowerShell
2. 或改用 --user 安装
3. 检查是否在受保护目录(如 C:\Program Files)中操作
不建议长期以管理员身份运行 pip,优先使用虚拟环境

6.2 网络问题与镜像源配置

问题现象操作细节注意事项
超时(Read timed out)或连接失败(ConnectionError)1. 临时使用国内镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package
2. 永久配置镜像源(见第二章 2.3 节)
3. 增加超时时间:pip install --timeout 100 package
国内推荐镜像:
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:https://mirrors.aliyun.com/pypi/simple/
配置 trusted-host 避免 SSL 警告
SSL 证书验证失败1. 添加 --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org
2. 或在配置文件中设置 trusted-host
仅用于临时绕过,不解决根本安全问题;企业网络可能需导入内部 CA 证书
代理环境下无法访问 PyPI1. 设置代理:pip install --proxy http://user:pass@proxy:port package
2. 或在配置文件中写入 [global] proxy = ...
若代理无需认证,格式为 http://proxy:port;HTTPS 代理需确认支持 CONNECT 方法

6.3 包冲突与依赖解析失败

问题现象操作细节注意事项
报错 ResolutionImpossible 或 Cannot install X because these package versions have conflicting dependencies1. 升级 pip 至最新版(≥20.3)以启用现代依赖解析器:python -m pip install --upgrade pip
2. 明确指定兼容版本:pip install "packageA>=1.0,<2.0" "packageB>=3.0"
3. 使用 pip-tools 管理依赖:pip-compile requirements.in 生成无冲突的锁定文件
旧版 pip(<20.3)依赖解析能力弱,易选错版本
避免混合使用 pip install 和 conda install
尽量在干净虚拟环境中安装
安装后出现 ImportError 或 ModuleNotFoundError1. 检查是否在正确环境中运行 Python
2. 确认包名与导入名一致(如 pip install Pillow,但 import PIL
3. 查看 pip show package 的 Location 是否在 sys.path 中
包名 ≠ 模块名(如 beautifulsoup4from bs4 import BeautifulSoup
多 Python 版本共存时,确保 pip 与 python 对应(用 python -m pip
循环依赖或版本锁定僵局1. 手动卸载冲突包:pip uninstall conflicting_package
2. 逐个安装关键包,观察报错
3. 使用 pipdeptree 分析依赖树:pip install pipdeptree && pipdeptree
可尝试 pip install --force-reinstall --no-deps 临时绕过,但需自行保证兼容性

6.4 pip 命令找不到或未识别

问题现象操作细节注意事项
终端提示 ‘pip’ is not recognized(Windows)或 command not found: pip(Linux/macOS)1. 使用 python -m pip 代替 pip:python -m pip install package
2. 检查 Python 是否包含 pip:python -m ensurepip --default-pip
3. 将 pip 所在目录加入 PATH:
- Windows: %APPDATA%\Python\PythonXX\Scripts
- Linux/macOS: ~/.local/bin
Python ≥3.4 通常自带 pip,但某些 Linux 发行版(如 Ubuntu)需单独安装 python3-pip
不同 Python 版本对应不同 pip(如 pip3.11
虚拟环境中 pip 自动可用,无需额外配置
pip 指向错误 Python 版本1. 始终使用 python -m pip 确保与当前解释器一致
2. 检查 which pip(Linux/macOS)或 where pip(Windows)
避免因 PATH 顺序导致 pip 与 python 版本不匹配

通用建议:

  • 所有 pip 操作优先在虚拟环境中进行。
  • 使用 python -m pip 而非直接 pip,可避免路径和版本混淆。
  • 定期升级 pip:python -m pip install --upgrade pip

第七章:pip 命令行接口详解

7.1 所有子命令概览

子命令用途常用场景
install安装包安装 PyPI、本地、Git 等来源的包
download下载包但不安装离线部署、缓存依赖
uninstall卸载已安装的包移除不再需要的依赖
freeze以 requirements 格式列出已安装包生成依赖锁定文件
list列出已安装包查看环境中的包列表
show显示包的详细信息检查版本、依赖、安装路径等
check验证已安装包的依赖是否兼容检测依赖冲突
config管理 pip 配置查看/设置配置项
search已禁用(自 pip 21.3 起)原用于搜索 PyPI 包,现不可用
cache管理 pip 缓存清理、查看缓存
index查询包索引信息(实验性)检查包版本可用性
wheel构建 wheel 包从源码打包
hash计算包文件的哈希值用于 requirements 哈希校验
completion输出 shell 自动补全脚本配置 bash/zsh 补全
debug显示 pip 调试信息诊断环境问题
help显示帮助信息查看命令用法

注意事项:

  • pip search 因 PyPI API 限制已于 2021 年禁用,建议直接访问 https://pypi.org 搜索。
  • pip index 为实验性命令,可能在后续版本变更。

7.2 各子命令的参数说明

install 命令常用参数

参数语法示例用途注意事项
-r, --requirementpip install -r requirements.txt从文件安装依赖支持嵌套 -r 引用
-e, --editablepip install -e .可编辑模式安装本地项目需含 setup.py 或 pyproject.toml
--no-depspip install --no-deps package不安装依赖可能导致运行时错误
--force-reinstallpip install --force-reinstall package强制重装不升级依赖
--prepip install --pre package允许预发布版本默认忽略 alpha/beta/rc
-U, --upgradepip install -U package升级包默认策略:仅当必要时升级依赖
--userpip install --user package安装到用户目录虚拟环境中无效
--target DIRpip install --target ./lib package安装到指定目录需手动处理 PYTHONPATH

uninstall 命令常用参数

参数语法示例用途注意事项
-y, --yespip uninstall -y package自动确认卸载用于脚本或 CI
多包卸载pip uninstall pkg1 pkg2同时卸载多个包所有包必须存在

list 命令常用参数

参数语法示例用途注意事项
--outdatedpip list --outdated列出可升级的包显示当前 vs 最新版本
--uptodatepip list --uptodate列出已是最新版的包较少使用
--formatpip list --format=freeze指定输出格式(columns, freeze, json)freeze 格式可用于 requirements

cache 命令常用参数

参数语法示例用途注意事项
dirpip cache dir显示缓存目录路径-
infopip cache info显示缓存统计信息-
purgepip cache purge清除所有缓存安全操作,可随时执行
remove <pattern>pip cache remove requests删除匹配包的缓存支持通配符(如 *

config 命令常用参数

参数语法示例用途注意事项
listpip config list列出当前生效的配置显示来源(global/user/site)
get keypip config get global.index-url获取配置值-
set key valuepip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple设置配置项自动写入用户配置文件
unset keypip config unset global.index-url删除配置项-
debugpip config debug显示配置文件加载路径用于排查配置未生效问题

其他命令简要说明:

  • pip show <package>:无特殊参数,直接显示元数据。
  • pip check:无参数,扫描整个环境依赖一致性。
  • pip hash <file>:计算 wheel 或 sdist 的 SHA256 哈希。

7.3 全局选项(如 -v, —no-cache-dir 等)

全局选项语法示例用途注意事项
-v, --verbosepip install -v package增加输出详细程度(可重复使用:-vv, -vvv用于调试安装失败原因
-q, --quietpip install -q package减少输出(静默模式)适用于自动化脚本
--no-cache-dirpip install --no-cache-dir package禁用缓存确保下载最新包,CI 推荐使用
--timeout SECONDSpip install --timeout 60 package设置网络超时时间(秒)默认 15 秒,慢网络可调高
--retries NUMpip install --retries 5 package设置下载重试次数默认 5 次
--trusted-host HOSTpip install --trusted-host pypi.org package跳过对指定主机的 SSL 验证用于企业代理或镜像源
--proxy URLpip install --proxy http://proxy:8080 package设置 HTTP/HTTPS 代理格式:[user:passwd@]proxy.server:port
--cert PATHpip install --cert /path/to/cert.pem package指定 SSL 客户端证书用于企业内网 HTTPS 代理
--client-cert PATHpip install --client-cert cert.pem package指定客户端证书(含私钥)--cert 配合使用
--exists-action ACTIONpip install --exists-action w package处理目标路径已存在时的行为(s=skip, w=wipe, b=backup, i=ignore)主要用于 --target 或 editable 安装

注意事项:

  • 全局选项可放在任意子命令之前或之后(如 pip -v installpip install -v)。
  • 多数全局选项也可在配置文件中设置(如 timeout = 60)。
  • 在 CI/CD 中推荐使用:--no-cache-dir --disable-pip-version-check -q 以提高稳定性和速度。