Python Has Too Many Package Managers
Overall sentiment
- Many agree Python packaging is fragmented and confusing compared to ecosystems like Rust’s Cargo or PHP’s Composer.
- Some argue the situation “used to be simple” with just
pip, and that successive tooling changes normalized breaking changes. - Others push back: for many day‑to‑day projects, basic tools still work fine.
pip + venv vs “modern” tools
- A sizable group reports long‑term success with
pip+venv(+ sometimespip-toolsorpyenv), treating venvs as disposable and usingrequirements.in+ compiledrequirements.txt. - Critics say this workflow often fails teams in practice: missing locks, drifting transitive deps, production‑only failures, and extra homegrown scripts.
- There’s debate on whether “just nuke the venv and reinstall” is acceptable or wasteful and fragile.
Poetry, PDM, Hatch, uv, Rye, etc.
- Poetry has many fans for lockfiles, reproducibility, multi‑Python support, and overall ergonomics; detractors cite instability, breaking changes, and performance issues.
- PDM gets praise for being PEP‑compliant, playing well with
pyproject.toml, and providing in‑project venvs. pip-toolsis liked as a minimal layer for generating fully pinned requirements, though some dislike its own dependency bloat.uvis described as extremely fast and “transformative”; some already pair it with other tools, others think it’s not yet “prime time.”- Rye is seen as a promising meta‑tool now using
uvunder the hood; it’s characterized as young but sane and fast. - Hatch is mentioned positively but under‑explored in the thread.
Conda, Nix, and scientific/ML use
- Conda is called “best for ML” by some, but others share horror stories of ultra‑slow solving, broken envs, confusing channel priority, and invasive installs.
- A few strongly prefer Nix (sometimes via wrappers) as the “be‑all‑and‑end‑all” for reliable Python environments and non‑Python deps.
Reproducibility, security, and dependency graphs
- Strong consensus that pinning full dependency trees and using lockfiles is essential for long‑term reproducibility; simply “pull latest” is widely criticized.
- Concerns about frequent breaking changes, accumulating CVEs, and complex dependency graphs (including real-world cycles).
- Some advocate vendoring wheels into version control to avoid supply‑chain surprises.
Ecosystem design & philosophy
- Frustration that Python’s “one obvious way” ideal hasn’t held for packaging: multiple build backends,
pyproject.tomlvariants, and shifting “official” tools (distutils removal,build/install, etc.). - Comparisons with Cargo, npm, Composer, Docker, and even Deno highlight trade‑offs between single binary builds, global vs local deps, and language vs OS package managers.