pip

pip 是 Python 的官方包管理器,随 Python 3.4+ 自动安装,用于从 PyPI(Python Package Index)安装、更新和卸载第三方库。

现代项目推荐配合虚拟环境(venv / virtualenv)或 uv(更快的替代工具)使用,避免全局包污染。


安装与升级

# 验证安装
pip --version
pip3 --version          # Python 3 专用命令(部分系统需区分)
 
# 升级 pip 自身
pip install --upgrade pip
python -m pip install --upgrade pip   # 推荐写法,确保使用当前 Python 的 pip

安装包

# 安装最新版本
pip install requests
 
# 安装指定版本
pip install requests==2.31.0
 
# 安装版本范围
pip install "requests>=2.28.0,<3.0.0"
 
# 安装多个包
pip install flask sqlalchemy pytest
 
# 升级已安装的包
pip install --upgrade requests
 
# 从 requirements.txt 批量安装
pip install -r requirements.txt
 
# 安装但不依赖缓存(强制重新下载)
pip install --no-cache-dir requests

卸载与查看

# 卸载
pip uninstall requests
pip uninstall requests -y           # 跳过确认
 
# 查看已安装的包
pip list
pip list --outdated                 # 查看可升级的包
 
# 查看某个包的详情(版本、依赖、安装位置)
pip show requests
 
# 查看包的依赖关系树
pip install pipdeptree
pipdeptree

requirements.txt

requirements.txt 是 Python 项目的依赖声明文件,类似 npmpackage.json

# 导出当前环境所有已安装包(含间接依赖,版本精确锁定)
pip freeze > requirements.txt
 
# 只导出直接依赖(推荐,避免锁定过多间接包)
pip install pipreqs
pipreqs . --encoding=utf-8         # 扫描代码中的 import,自动生成

requirements.txt 内容示例:

# 生产依赖
flask==3.0.3
sqlalchemy==2.0.30
pydantic==2.7.1
redis==5.0.4

# 带版本范围(灵活升级)
requests>=2.28.0

# 带注释
pytest>=7.0.0       # 测试框架

多环境拆分

requirements/
├── base.txt         # 生产依赖
├── dev.txt          # 开发工具(-r base.txt)
└── test.txt         # 测试工具(-r base.txt)
# requirements/dev.txt
-r base.txt
black
isort
pylint
ipython
pip install -r requirements/dev.txt

虚拟环境

虚拟环境隔离每个项目的依赖,避免全局包版本冲突:

# 创建虚拟环境(Python 3.3+ 内置)
python -m venv .venv
 
# 激活
source .venv/bin/activate          # macOS / Linux
.venv\Scripts\activate             # Windows (cmd)
.venv\Scripts\Activate.ps1         # Windows (PowerShell)
 
# 激活后命令提示符显示 (.venv)
(.venv) $ pip install flask        # 安装到虚拟环境,不影响全局
 
# 退出虚拟环境
deactivate

.venv 目录不应提交到 Git,在 .gitignore 中添加:

.venv/
__pycache__/
*.pyc

镜像源配置(国内加速)

临时使用

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

永久配置

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn

或直接编辑配置文件:

# ~/.config/pip/pip.conf(Linux/macOS)
# %APPDATA%\pip\pip.ini(Windows)
 
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
trusted-host = pypi.tuna.tsinghua.edu.cn
timeout = 60

常用国内镜像:

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

私有包仓库

企业内部可使用 Nexus / Artifactory / devpi 搭建私有 PyPI:

# pip.conf 配置私有源
[global]
index-url = https://pypi.company.com/simple/
extra-index-url = https://pypi.org/simple/    # 回退到官方源
 
[install]
trusted-host = pypi.company.com

pip vs uv vs conda

工具速度虚拟环境适用场景
pip中等需配合 venv通用,官方标准
uv极快(Rust 实现)内置现代 Python 项目首选
conda内置数据科学(管理非 Python 依赖)

常用命令速查

pip install <pkg>               # 安装
pip install <pkg>==<ver>        # 指定版本
pip install -r requirements.txt # 批量安装
pip install --upgrade <pkg>     # 升级
pip uninstall <pkg>             # 卸载
pip list                        # 列出已安装
pip list --outdated             # 查看可升级
pip show <pkg>                  # 包详情
pip freeze > requirements.txt   # 导出依赖
pip config list                 # 查看 pip 配置

相关链接

  • uv — 基于 Rust 的极速 Python 包管理器,pip 的现代替代
  • 模块与包 — Python 模块系统与包结构
  • npm — JavaScript 的对等包管理器
  • Maven — Java 的对等包管理器