uv, Poetry ve proje yönetimi: modern Python projeleri kurmak
Kısaca: Modern Python projeleri pyproject.toml, yalıtılmış ortamlar ve kilit dosyaları kullanır; uv veya Poetry gibi araçlar bağımlılıkları, Python sürümlerini ve derlemeleri yalnızca pip’ten daha hızlı ve yeniden üretilebilir biçimde yönetir.
Biraz daha ayrıntılı: Küçük betikler için pip install ve requirements.txt yeter. Birkaç geliştirici, dağıtımlar ve testler olan projeler için tanımlı sürümlere, ayrı ortamlara ve kilit dosyalarına ihtiyaç vardır.
Ayrıntılı
pyproject.toml
Merkezî yapılandırma dosyası (PEP 621):
[project]
name = "gamecatalog"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = ["fastapi>=0.110", "httpx"]
[dependency-groups]
dev = ["pytest", "mypy", "ruff"]
[tool.ruff]
line-length = 100Meta verileri, bağımlılıkları, araç yapılandırmasını (ruff, pytest, mypy, black) içerir. setup.py/setup.cfg’nin yerini alır. Derleme arka uçları: hatchling, setuptools, poetry-core.
uv
uv (Astral, Rust ile yazılmış): son derece hızlı paket yöneticisi ve proje aracı.
uv init gamecatalog && cd gamecatalog
uv add fastapi httpx # bağımlılık + uv.lock
uv add --dev pytest ruff mypy
uv run pytest # proje ortamında çalışır
uv python install 3.12 # Python sürümünü yönet
uv sync # kilit dosyasına tam uygun kur
uvx ruff check . # bir aracı kurmadan bir kez çalıştır.venv oluşturur, uv.lock yazar (yeniden üretilebilir). pip ile uyumludur (uv pip install).
Poetry ve diğerleri
- Poetry: bağımlılık çözümü,
poetry.lock, virtualenv yönetimi, derleme/yayımlama (poetry add,poetry install,poetry run). - PDM, Hatch, Rye (→ uv): benzer yaklaşımlar.
- pip + venv: temel (
python -m venv .venv,pip install -r requirements.txt);pip freezedondurur, pip-tools (pip-compile) kilit dosyaları oluşturur. - Bilimsel paketler için conda/mamba (yerel kütüphaneler, CUDA).
- CLI araçları için pipx (yalıtılmış kurulur).
- Docker: ortamı konteynerde sabitle.
İyi uygulama
- Proje başına bir ortam,
.venv’i commit etme (.gitignore), kilit dosyasını commit et. - Python sürümünü sabitle (
.python-version,requires-python). - Geliştirme bağımlılıklarını ayır.
- Güncellemeler: Dependabot/Renovate,
uv lock --upgrade, değişiklik günlüklerini oku (SemVer). - Güvenlik:
pip-audit/uv pip audit, kaynakları kontrol et (typosquatting, tedarik zinciri), karmalar (--require-hashes). - Linter/biçimlendirici: ruff (flake8/isort/black’in yerini büyük ölçüde alır), pre-commit kancaları.
- Yapı:
src/düzeni, testlertests/içinde, CLI girişi[project.scripts]. - Eğitim/proje: denetçiler için kurulum adımlarını içeren README (
uv sync && uv run pytest).
Ayrıca bak: Anlamsal sürümleme, Conda ve Jupyter