pip 用户使用手册

Python 包管理工具 · 从入门到日常排障

1. pip 简介

pip 是 Python 的标准包管理工具,用于安装、卸载、管理 Python 第三方库。Python 3.4+ 自带 pip(ensurepip),通常无需单独安装。

# 查看版本
pip --version

# 升级 pip 自身
pip install --upgrade pip

2. 包安装

2.1 从 PyPI 安装

# 安装最新版本
pip install requests

# 安装指定版本
pip install requests==2.31.0

# 版本约束(兼容)
pip install "requests>=2.25,<3.0"
pip install requests~=2.31.0    # >=2.31.0, <2.32.0

# 安装多个包
pip install requests flask numpy

# 不安装依赖
pip install requests --no-deps

2.2 从其他源安装

# 从 GitHub 安装
pip install git+https://github.com/psf/requests.git
pip install git+https://github.com/psf/requests.git@v2.31.0

# 从本地文件安装
pip install /path/to/package.tar.gz
pip install /path/to/package.whl
pip install -e /path/to/local/package   # 开发模式(editable)
pip install -e .                            # 安装当前目录的包(开发模式)

# 从本地目录安装(含 setup.py / pyproject.toml)
pip install ./my-package

2.3 可编辑安装 pip install -e

pip install -e .(editable / develop mode)将当前目录以"可编辑模式"安装到 Python 环境。与普通安装不同,它不是复制文件到 site-packages/,而是创建一个指向源码目录的链接。

# 安装当前目录
cd my-project
pip install -e .

# 等价写法
pip install --editable .

工作原理:

CLI 入口点(pyproject.toml):

# pyproject.toml
[project.scripts]
my-cli = "my_package.cli:main"

pip install -e . 会根据 [project.scripts] 在 PATH 中生成可执行脚本(如 my-cli),这些脚本指向 site-packages/ 中的包装器,最终调用源码中的 main() 函数。修改源码,命令行为立即生效。

典型场景:

注意:pip install -e . 需要项目根目录有 pyproject.toml 或 setup.py。如果只是普通脚本目录没有打包配置,则无法使用。

3. 包卸载

# 卸载
pip uninstall requests

# 跳过确认提示
pip uninstall -y requests

# 批量卸载
pip uninstall -y -r requirements.txt

4. 包信息查看

# 列出已安装的包
pip list

# 列出过时的包(可升级的)
pip list --outdated

# 查看指定包信息
pip show requests

# 查看包的所有文件位置
pip show -f requests

# 冻结当前环境(生成精确版本列表)
pip freeze
pip freeze > requirements.txt

5. requirements.txt 依赖管理

5.1 常用格式

# requirements.txt 示例
requests==2.31.0
flask>=2.3,<3.0
numpy
git+https://github.com/user/repo.git@v1.0.0
./local-package

5.2 常用操作

# 从文件安装
pip install -r requirements.txt

# 生成 requirements.txt(精确版本)
pip freeze > requirements.txt

# 安装后验证依赖完整性
pip check

# 分析依赖树
pip install pipdeptree && pipdeptree

6. 镜像源配置

6.1 国内常用镜像

镜像URL
清华https://pypi.tuna.tsinghua.edu.cn/simple
阿里云https://mirrors.aliyun.com/pypi/simple
中科大https://pypi.mirrors.ustc.edu.cn/simple
豆瓣https://pypi.douban.com/simple
腾讯云https://mirrors.cloud.tencent.com/pypi/simple

6.2 临时使用

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

6.3 永久配置

Linux / macOS:~/.pip/pip.conf

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

Windows:%APPDATA%\pip\pip.ini

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

7. 虚拟环境

7.1 venv(Python 内置)

# 创建
python -m venv myenv

# 激活
source myenv/bin/activate      # Linux / macOS
myenv\Scripts\activate         # Windows

# 退出
deactivate

# 删除
rm -rf myenv

7.2 virtualenv(需安装)

pip install virtualenv
virtualenv myenv

# 指定 Python 版本
virtualenv -p /usr/bin/python3.11 myenv

7.3 conda(Anaconda / Miniconda)

conda create -n myenv python=3.11
conda activate myenv
conda deactivate

8. 缓存管理

# 查看缓存目录
pip cache dir

# 查看缓存信息
pip cache info

# 列出缓存的包
pip cache list

# 清理所有缓存
pip cache purge

# 删除指定包缓存
pip cache remove requests

# 安装时不使用缓存
pip install --no-cache-dir requests

9. 高级用法

9.1 下载而不安装

# 下载包及其依赖到本地
pip download requests -d ./packages

# 离线安装
pip install --no-index --find-links=./packages requests

9.2 约束文件(constraints)

约束文件限制版本但不自动安装,与 requirements.txt 配合使用:

# constraints.txt
requests>=2.25

# 使用约束安装
pip install -r requirements.txt -c constraints.txt

9.3 用户级安装(无需 sudo)

pip install --user requests
# 安装在 ~/.local/lib/pythonX.Y/site-packages/

9.4 列出依赖树

# 查看某包的依赖
pip show requests

# 更清晰的依赖树
pip install pipdeptree
pipdeptree -p requests        # 只看 requests 及其依赖
pipdeptree -r                 # 反向依赖(谁依赖了它)

9.5 编译 wheel

# 从源码编译 wheel
pip wheel requests

# 指定输出目录
pip wheel -w ./wheels requests

9.6 安全审计

# 检查已知漏洞(需安装 pip-audit)
pip install pip-audit
pip-audit

10. 常见问题

10.1 SSL 证书错误

# 临时跳过(不推荐)
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org requests

# 永久:在 pip.conf 添加
[global]
trusted-host = pypi.org
               files.pythonhosted.org

10.2 权限不足(Permission denied)

# 方案1:用户级安装
pip install --user requests

# 方案2:使用虚拟环境
python -m venv myenv && source myenv/bin/activate

10.3 依赖冲突

# 检查冲突
pip check

# 使用 pip-tools 管理精确依赖
pip install pip-tools
pip-compile requirements.in          # 生成已解析的 requirements.txt
pip-sync requirements.txt            # 同步环境到精确匹配

# 强制安装(忽略冲突,慎用)
pip install --force-reinstall requests

10.4 pip 自身损坏

# 重新安装 pip
python -m ensurepip --upgrade
# 或
python -m pip install --upgrade pip

10.5 指定平台 / 架构下载

# 下载非当前平台的包(如 macOS arm64 下载 Linux x86_64 包)
pip download --platform manylinux2014_x86_64 --only-binary=:all: requests -d ./linux-pkgs

10.6 已安装但 import 找不到

# 确认 pip 对应的 Python
pip --version                    # 查看 pip 所属的 Python
python -c "import sys; print(sys.executable)"
which python && which pip        # 确认一致

11. 常用配置项速查

pip.conf / pip.ini 完整配置项:

[global]
index-url = https://pypi.org/simple
extra-index-url = https://pypi.example.com/simple
trusted-host = pypi.example.com
timeout = 60
retries = 3
cache-dir = /path/to/cache
no-cache-dir = false

[install]
# 仅安装二进制 wheel,不回退到源码编译
only-binary = :all:

[list]
format = columns