开发工具
Python开发环境搭建:虚拟环境与包管理最佳实践
详解Python开发环境搭建,对比venv、Poetry、uv等包管理工具,帮你建立规范的Python项目工作流。
#Python
#虚拟环境
#包管理
#开发环境
Python环境管理为什么这么复杂
Python的环境管理一直是初学者和老手都头疼的问题。不同项目需要不同的Python版本和依赖包,如果不做隔离,很容易出现依赖冲突。今天我来梳理一下2026年Python环境管理的最佳实践。
Python版本管理
pyenv:管理多个Python版本
# 安装pyenv
brew install pyenv
# 添加到shell配置
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# 查看可安装的版本
pyenv install --list
# 安装Python 3.12
pyenv install 3.12.5
# 设置全局默认版本
pyenv global 3.12.5
# 为某个项目设置特定版本
cd my-project
pyenv local 3.11.9
虚拟环境工具对比
| 工具 | 速度 | 功能 | 学习曲线 | 推荐指数 |
|---|---|---|---|---|
| uv | 极快 | 全能(新) | 低 | ★★★★★ |
| Poetry | 中 | 全能 | 中 | ★★★★ |
| venv | 中 | 基础 | 低 | ★★★ |
| Pipenv | 慢 | 中等 | 中 | ★★ |
| conda | 慢 | 全能+科学计算 | 中 | ★★★★(数据科学) |
uv:2026年的首选
uv是由Astral(Ruff的作者)开发的,用Rust编写的Python包管理器。速度比pip快10-100倍。
# 安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建新项目
uv init my-project
cd my-project
# 添加依赖
uv add fastapi uvicorn
uv add --dev pytest ruff
# 运行项目
uv run python main.py
# 运行脚本
uv run pytest
# 同步依赖
uv sync
uv的项目结构
my-project/
├── pyproject.toml # 项目配置和依赖
├── uv.lock # 锁定文件
├── .python-version # Python版本
├── src/
│ └── my_project/
│ └── __init__.py
└── tests/
└── test_main.py
# pyproject.toml
[project]
name = "my-project"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"fastapi>=0.115",
"uvicorn>=0.30",
]
[tool.uv]
dev-dependencies = [
"pytest>=8.0",
"ruff>=0.7",
]
Poetry:成熟稳定的选择
Poetry已经发展了好几年,生态和工具链比较完善。如果你的团队已经在用Poetry,没必要急着换。
# 安装Poetry
curl -sSL https://install.python-poetry.org | python3 -
# 创建新项目
poetry new my-project
cd my-project
# 添加依赖
poetry add fastapi uvicorn
poetry add --group dev pytest ruff
# 安装所有依赖
poetry install
# 运行命令
poetry run python main.py
poetry run pytest
# 导出requirements.txt(兼容需求)
poetry export -f requirements.txt --output requirements.txt
uv vs Poetry
| 维度 | uv | Poetry |
|---|---|---|
| 安装速度 | 极快(Rust) | 中等(Python) |
| 解析依赖 | 极快 | 较慢 |
| Python版本管理 | 内置 | 需要pyenv |
| 发布到PyPI | 支持 | 支持 |
| 生态成熟度 | 较新但快速发展 | 成熟 |
| 社区大小 | 快速增长 | 大 |
venv:最基础的虚拟环境
如果你只是想快速隔离一个环境,Python内置的venv就够了。
# 创建虚拟环境
python -m venv .venv
# 激活(macOS/Linux)
source .venv/bin/activate
# 激活(Windows)
.venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 导出依赖
pip freeze > requirements.txt
# 退出虚拟环境
deactivate
Python代码质量工具
Ruff:极速Python Linter
# 安装
uv add --dev ruff
# 检查代码
ruff check .
# 自动修复
ruff check --fix .
# 格式化代码(替代Black)
ruff format .
# pyproject.toml中配置Ruff
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP"]
[tool.ruff.format]
quote-style = "double"
类型检查
# mypy:最成熟的类型检查器
uv add --dev mypy
mypy src/
# pyright:更快的选择(VS Code Python插件自带)
uv add --dev pyright
pyright src/
Python开发的VS Code配置
配合VS Code使用Python效果很好:
// .vscode/settings.json
{
"python.defaultInterpreterPath": ".venv/bin/python",
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.ruff": "explicit",
"source.organizeImports.ruff": "explicit"
}
},
"python.testing.pytestEnabled": true,
"python.testing.pytestArgs": ["tests"]
}
Docker化Python开发环境
对于复杂项目,用Docker管理开发环境更稳定:
FROM python:3.12-slim
# 安装uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
WORKDIR /app
# 先复制依赖文件,利用Docker缓存
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev
# 复制源代码
COPY . .
CMD ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0"]
我的Python工作流总结
版本管理: uv (内置Python版本管理)
包管理: uv
Linter: Ruff
格式化: Ruff Format
类型检查: Pyright
测试: Pytest
编辑器: VS Code + Python扩展
CI: GitHub Actions
更多关于如何搭建CI/CD流程,可以参考CI/CD工具对比。如果你还在纠结用什么IDE写Python,可以看看JetBrains vs VS Code的对比。
总结
2026年Python开发环境管理终于不再混乱了。uv作为新一代工具,在速度和功能上都非常出色,强烈推荐新项目使用。老项目也可以逐步从pip/Poetry迁移到uv。不管用什么工具,核心原则不变:每个项目一个虚拟环境,依赖版本锁定,代码质量工具全开。