Python现代工具链:uv、ruff和取代pip的工具

Python的工具生态系统在过去两年经历了重大演变。许多开发者学习的工具——pip、virtualenv、flake8、black——已经被更快、更集成的替代品所取代。以下是当前状态。

uv:pip的替代品

uv(来自Astral)是一个用Rust编写的Python包安装器和解析器,设计为pip和pip-tools的即插即用替代品,速度快10到100倍。主要优势:正确处理冲突的依赖解析(pip的解析器出了名的差)、自动虚拟环境创建(uv venv)、锁文件支持(uv.lock——确定性、可重复安装),以及不污染全局Python环境安装全局工具的uv tool命令。对于新项目:uv init设置带pyproject.toml的项目;uv add package安装依赖;uv run script.py在托管环境中运行脚本。uv正在成为生产Python项目的标准。

ruff:Linter和格式化器

ruff(也来自Astral)是一个用Rust编写的Python linter和代码格式化器,用单个工具取代flake8、black、isort和pyupgrade,运行速度快10到100倍。一个命令替代四个:用于linting的ruff check .,用于格式化的ruff format .。在pyproject.tomlruff.toml中配置。对于新项目,ruff应该是唯一的linting/格式化依赖——不再有理由维护单独的工具堆栈。

pyproject.toml:中央配置

现代Python项目使用pyproject.toml作为构建系统、依赖项、工具配置(ruff、mypy、pytest设置都在一个文件中)的单一配置文件。这替代了使Python项目根目录凌乱的setup.pysetup.cfgrequirements.txt.flake8.isort.cfg和其他文件的分散。

仍然工作良好的内容

pytest仍然是测试标准。mypy或pyright用于类型检查。FastAPI用于Web API。SQLAlchemy用于数据库ORM。Python生态系统在库层面的稳定性很高——工具层发生了重大变化,库本身成熟且稳定。

上一篇 Python's Modern Toolchain: uv, ruff, and What's Replaced pip
下一篇 Northern European Capitals: How Stockholm, Copenhagen, Helsinki, and Oslo Compare