The Python Tooling Problem
To start a Python project in 2025, you need:
-
pyenvto manage Python versions -
venvorvirtualenvto create environments -
pipto install packages -
pip-toolsorpoetryfor lockfiles -
setuptoolsorhatchlingfor building
That's 5 tools to do what should be 1.
Rye is that 1 tool. Written in Rust by the creator of Flask (Armin Ronacher).
What Rye Gives You
Python Version Management
# Install any Python version
rye pin 3.12
rye pin cpython@3.11
rye pin pypy@3.10
# Auto-downloads the right Python. No pyenv needed.
Project Setup
rye init my-project
cd my-project
Creates pyproject.toml, .python-version, and a virtual environment. Everything configured.
Dependency Management
# Add dependencies
rye add flask requests
rye add --dev pytest black
# Lock and sync
rye sync
Generates a lockfile. Installs exact versions. Reproducible builds.
Scripts
# pyproject.toml
[tool.rye.scripts]
dev = "flask run --debug"
test = "pytest -v"
lint = "ruff check ."
rye run dev
rye run test
Global Tool Installation
# Install CLI tools globally (replaces pipx)
rye install black
rye install ruff
rye install httpie
Workspace Support
# pyproject.toml (monorepo root)
[tool.rye.workspace]
members = ["packages/*"]
Manage multiple Python packages in one repo with shared lockfiles.
Quick Start
# Install Rye (one command)
curl -sSf https://rye.astral.sh/get | bash
# Create and run a project
rye init my-api
cd my-api
rye add fastapi uvicorn
rye sync
rye run uvicorn main:app
Why This Matters
Python's tooling fragmentation is its biggest pain point. Rye proves that one tool can manage Python versions, virtual environments, dependencies, lockfiles, and builds — like Cargo for Rust or npm for JavaScript.
Building Python data pipelines? Check out my web scraping actors on Apify Store — structured data via API for your Python apps. For custom solutions, email spinov001@gmail.com.
Top comments (0)