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 开发的基础技能。