开发工具

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

维度uvPoetry
安装速度极快(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。不管用什么工具,核心原则不变:每个项目一个虚拟环境,依赖版本锁定,代码质量工具全开。