Python 基础Technical Deep Dive

pip 与虚拟环境:Python 包管理完全指南

发布时间2025/11/26
分类Python 基础
预计阅读7 分钟
作者吴长龙
*

Python 项目依赖管理是必备技能。本文介绍 pip、venv、uv 等工具,以及 requirements.txt、pyproject.toml 的最佳实践。

01.内容

# pip 与虚拟环境:Python 包管理完全指南

Python 项目的依赖管理非常重要,本文介绍完整的包管理方案。

02.1. pip 基础

1.1 安装与升级

bash snippetbash
# 安装包
pip install requests
pip install requests==2.28.0  # 指定版本

# 升级包
pip install --upgrade requests

# 卸载包
pip uninstall requests

1.2 requirements.txt

bash snippetbash
# 导出当前环境依赖
pip freeze > requirements.txt

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

# requirements.txt 示例
requests==2.28.0
numpy>=1.21.0
pandas
openai>=1.0.0
langchain>=0.1.0

1.3 指定源

bash snippetbash
# 使用国内镜像
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

# 持久化配置
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

03.2. 虚拟环境

2.1 venv

bash snippetbash
# 创建虚拟环境
python -m venv venv

# 激活 (Linux/Mac)
source venv/bin/activate

# 激活 (Windows)
venv\Scripts\activate

# 退出
deactivate

2.2 项目结构

code snippetcode
my-project/
├── venv/              # 虚拟环境
├── src/               # 源代码
├── tests/             # 测试
├── requirements.txt   # 依赖
├── .gitignore
└── README.md

2.3 .gitignore

code snippetcode
venv/
__pycache__/
*.py[cod]
.pytest_cache/
.env

04.3. pyproject.toml (推荐)

toml snippettoml
[project]
name = "my-ai-app"
version = "0.1.0"
description = "AI Application"
requires-python = ">=3.10"
dependencies = [
    "openai>=1.0.0",
    "langchain>=0.1.0",
    "python-dotenv>=1.0.0",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.0.0",
    "ruff>=0.1.0",
]

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[tool.pytest.ini_options]
testpaths = ["tests"]

[tool.ruff]
line-length = 100

05.4. uv (更快的新选择)

bash snippetbash
# 安装 uv
pip install uv

# 创建项目
uv init my-project
cd my-project

# 安装依赖
uv add requests
uv add langchain --group main
uv add pytest --group dev

# 创建虚拟环境
uv venv

# 运行脚本
uv run main.py

06.5. 最佳实践

场景推荐方案
小项目venv + requirements.txt
大项目uv + pyproject.toml
团队协作pyproject.toml + uv

07.6. 总结

  • 使用虚拟环境隔离依赖
  • 推荐 pyproject.toml
  • uv 更快更现代

(未完待续...)