venv、pip、requirements.txt 是什么

Python 项目依赖管理的三件套:虚拟环境、包管理器、依赖清单。

1. venv - 虚拟环境

虚拟环境让每个项目有独立的 Python 解释器和依赖,互不干扰。

创建虚拟环境

# 创建
python -m venv myenv

# 激活 (Windows)
myenv\Scripts\activate

# 激活 (macOS/Linux)
source myenv/bin/activate

# 退出
deactivate

使用 virtualenv(老版本)

# 需要先安装
pip install virtualenv

# 创建
virtualenv myenv

2. pip - 包管理器

pip 是 Python 内置的包管理器。

常用命令

# 安装包
pip install requests
pip install requests==2.28.0     # 指定版本
pip install "requests>=2.0"      # 最低版本
pip install -U requests          # 升级

# 卸载
pip uninstall requests

# 查看
pip list                    # 已安装的包
pip show requests          # 包信息
pip freeze                 # 已安装包及版本

# 搜索
pip search requests        # 已废弃,用 pip index search

国内镜像

# 临时使用
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

# 设为默认
pip config set global index-url https://pypi.tuna.tsinghua.edu.cn/simple

3. requirements.txt

记录项目依赖的文件。

生成

# 导出当前环境的所有依赖
pip freeze > requirements.txt

# 只导出项目直接依赖(推荐)
pip freeze | grep -v "^-e" > requirements.txt

内容示例

requests==2.28.0
flask==2.2.0
numpy==1.23.0

使用

# 安装所有依赖
pip install -r requirements.txt

# 在新环境重建
pip install -r requirements.txt

4. 最佳实践

项目结构

myproject/
├── requirements.txt      # 依赖清单
├── requirements-dev.txt  # 开发依赖
├── src/
└── tests/

分环境依赖

# 开发依赖
pip install -r requirements-dev.txt

# 生产依赖
pip install -r requirements.txt

pip-tools(推荐)

pip install pip-tools

# 生成锁文件
pip-compile requirements.in    # 锁定精确版本

5. 常见问题

PyPI 镜像站

  • 清华:https://pypi.tuna.tsinghua.edu.cn/simple
  • 阿里:https://mirrors.aliyun.com/pypi/simple
  • 腾讯:https://mirrors.cloud.tencent.com/pypi/simple

权限问题

# Linux/Mac 使用 --user
pip install --user package

# 或使用虚拟环境(推荐)
python -m venv venv
source venv/bin/activate

兼容性问题

# 检查依赖兼容性
pip check

# 查看冲突
pip list --outdated

快速对照表

命令 作用
python -m venv venv 创建虚拟环境
pip install pkg 安装包
pip freeze > req.txt 导出依赖
pip install -r req.txt 安装依赖
pip list 列出已安装

掌握 venv、pip 和 requirements.txt 是 Python 开发的基础技能。