Tools to setup great Python projects: 2025 update
In 2023, I talked about my approach to setup reliable python projects, using tools to manage dependencies robustly and level up the team's code automatically. Since then, new tools have come out and my preferences have changed a bit:
- Package manger: uv (previously: poetry)
- Python manager: uv (previously: pyenv)
- Python binaries manager: uv (previously: pipx)
- Formatter: ruff + reorder-python-imports (previously: black + isort)
- Linter: ruff
- Tester: pytest
I still find it important to centralize your configurations and assure consistent behavior across CLIs, IDEs, CI/CDs, etc. I keep storing all configurations in pyproject.toml
and setup a script that calls these tools (usually pre-commit
).
Results:
- configure once, get helpful checks forever
- improve workflow for all team members, present and future
- deploy projects deterministically with little surprises
- consistent behavior across different environments