uv: Ο διαχειριστής πακέτων Python που αντικαθιστά το pip, τα pip-tools και το venv (Οδηγός 2026)
Εάν έχετε περάσει χρόνο σε ένα έργο Python φέτος, πιθανότατα έχετε δει το "uv" να εμφανίζεται σε ένα αρχείο README ή CI. Είναι ένα εργαλείο διαχείρισης πακέτων και virtualenv γραμμένο με Rust από την Astral (η ίδια ομάδα πίσω από το "ruff") — και είναι 10-100 φορές ταχύτερο από τον κλασικό συνδυασμό pip / pip-tools / venv.
Αυτός ο οδηγός καλύπτει: τι αντικαθιστά πραγματικά το uv, τις πέντε εντολές που καλύπτουν το 95% του τι κάνετε καθημερινά και τις δύο περιπτώσεις στις οποίες πρέπει να παραμείνετε με τα κλασικά εργαλεία.
Τι αντικαθιστά το uv
| Κλασικό εργαλείο | ισοδύναμο UV | Επιτάχυνση |
|---|---|---|
| python -m venv .venv | uv venv | ~5x |
| pip install pkg | uv pip install pkg | ~10-50x |
| pip install -r απαιτήσεις.txt | uv pip install -r απαιτήσεις.txt | 20-100x σε ψυχρή κρυφή μνήμη |
| pip-compile (pip-tools) | uv pip compile | ~50x |
| "python -m venv" + "source activate" για κάθε έργο | Uv run <cmd> | Παραλείπει εντελώς την ενεργοποίηση |
Η διαφορά ταχύτητας είναι πραγματική. Η εγκατάσταση ενός έργου Django μέτριας έντασης (Django + DRF + cellery + redis + boto3 + ~40 transitive deps) σε μια κρύα μνήμη cache διαρκεί ~45 δευτερόλεπτα με pip και ~2 δευτερόλεπτα με uv. Σε μια ζεστή κρυφή μνήμη, το uv είναι ουσιαστικά άμεσο επειδή χρησιμοποιεί μια καθολική κρυφή μνήμη σκληρού συνδέσμου αντί να αντιγράφει αρχεία σε κάθε venv.
Οι πέντε εντολές που θα χρησιμοποιήσετε πραγματικά
1. Εγκαταστήστε το ίδιο το UV
BASH# macOS + Linux — one line, no sudo, no Python needed curl -LsSf https://astral.sh/uv/install.sh | sh # Windows PowerShell powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Or via brew / apt / your package manager (updated frequently) brew install uv
Το uv είναι ένα ενιαίο αυτόνομο δυαδικό αρχείο — χωρίς Python bootstrap, χωρίς δικές του εξαρτήσεις.
2. Δημιουργήστε ένα virtualenv
BASHcd my-project uv venv # creates .venv/ using the current Python uv venv --python 3.13 # or pin a version — uv will download it if missing
Σε αντίθεση με το «python -m venv», το uv μπορεί να αναφέρει την έκδοση Python που ζητήσατε. Τέρμα ο χορός τριών βημάτων "pyenv install, then venv then activate".
3. Εγκαταστήστε πακέτα
BASHuv pip install fastapi httpx # into the current venv uv pip install -r requirements.txt # bulk install uv pip install -e . # editable install of current project
Η σύνταξη είναι σκόπιμα πανομοιότυπη με το "pip" — ανταλλάξτε το "pip" με το "uv pip" και όλα λειτουργούν. Κόστος μετεγκατάστασης: πέντε πατήματα πλήκτρων.
4. Απαιτήσεις παγώματος / μεταγλώττισης
BASH# From an installed venv → requirements.txt (like `pip freeze`) uv pip freeze > requirements.txt # From a loose requirements.in → fully pinned requirements.txt (like pip-compile) uv pip compile requirements.in -o requirements.txt
Το βήμα «μεταγλώττιση» είναι ντετερμινιστικό — ίδια είσοδος, ίδια έξοδος, byte-for-byte. Ιδανικό για αναπαραγόμενο CI.
5. Εκτελέστε μια εντολή χωρίς να ενεργοποιήσετε το venv
BASHuv run pytest # runs pytest from the current venv uv run python manage.py migrate # any command, any script uv run --with ipython python # temporarily add ipython for this session
Αυτό είναι το φονικό χαρακτηριστικό. Δεν υπάρχει πλέον «source .venv/bin/activate» πριν από κάθε εντολή. Εξαιρετικό στο CI, εξαιρετικό στο Makefiles, εξαιρετικό σε σενάρια κελύφους.
Μετεγκατάσταση υπάρχοντος έργου (2 λεπτά)
Υποθέτοντας ότι έχετε ένα "requirements.txt":
BASH# 1. Nuke the old venv rm -rf .venv # 2. Create the uv venv uv venv # 3. Install uv pip install -r requirements.txt # 4. Verify uv run python -c "import fastapi; print(fastapi.__version__)"
Τέσσερις εντολές, έγιναν. Το "requirements.txt" σας δεν χρειάζεται να αλλάξει. Το "pyproject.toml" σας δεν χρειάζεται να αλλάξει. Το CI σας δεν χρειάζεται να αλλάξει — αλλάξτε το βήμα εγκατάστασης και τελειώσατε.
Η εγγενής διαδρομή pyproject.toml (έργα UV-first)
Για έργα που ξεκινούν από το μηδέν, χρησιμοποιήστε την εγγενή ροή εργασιών του uv — no request.txt καθόλου:
BASHuv init my-project # generates pyproject.toml + .python-version + .gitignore cd my-project uv add fastapi # adds fastapi to pyproject.toml [dependencies] AND installs uv add --dev pytest # adds to dev-dependencies uv sync # installs exactly what pyproject.toml says (uses uv.lock) uv lock --upgrade # bumps every dependency to its latest compatible version
Αυτό είναι το ίδιο σχήμα με το "cargo" για το Rust ή το "npm" για το Node — ένα αρχείο διαμόρφωσης, ένα αρχείο κλειδώματος, ντετερμινιστικές εγκαταστάσεις. Αν ξεκινάτε καινούργια το 2026, αυτό είναι το μονοπάτι.
Πότε να χρησιμοποιείτε ακόμα pip / venv
Δύο περιπτώσεις:
1. Συστήματα CI παλαιού τύπου που δεν μπορούν να εγκαταστήσουν υπεριώδη ακτινοβολία Εάν έχετε κολλήσει με έναν πράκτορα Jenkins από το 2019 χωρίς πρόσβαση στο κέλυφος, η τριβή της εγκατάστασης υπεριώδους μπορεί να υπερβαίνει το κέρδος ταχύτητας. Κάθε σύγχρονο σύστημα CI (GitHub Actions, GitLab CI, CircleCI, BuildKite) διαθέτει πρόγραμμα εγκατάστασης UV μίας γραμμής.
2. Περιβάλλοντα με διάκενο με κλειδωμένο «pip» καθρέφτη. Το uv έχει προεπιλογή PyPI, αλλά υποστηρίζει «--index-url» — αυτό συνήθως λειτουργεί, αλλά ορισμένοι εταιρικοί καθρέφτες έχουν λεπτές συμπεριφορές (κεφαλίδες auth, JSON API έναντι Simple API) που το uv χειρίζεται διαφορετικά. Δοκιμάστε πριν δεσμευτείτε.
Αυτό είναι όλο. Για κάθε άλλη περίπτωση το 2026 — solo dev, ομαδικά έργα, ανοιχτού κώδικα, CI, Docker — το uv είναι ταχύτερο, πιο αξιόπιστο και απαιτεί λιγότερα πνευματικά έξοδα από την κλασική στοίβα.
Η εναλλαγή CI 30 δευτερολέπτων
Πριν (Ενέργειες GitHub):
YAML- uses: actions/setup-python@v5 with: python-version: '3.13' - run: pip install -r requirements.txt - run: pytest
Μετά:
YAML- uses: astral-sh/setup-uv@v3 - run: uv sync - run: uv run pytest
Το CI εκτελείται πτώση από ~2 λεπτά σε ~15 δευτερόλεπτα στο βήμα εγκατάστασης. Εάν ο πίνακας δοκιμής σας εκτελείται 5 φορές ανά PR, αυτό είναι μια πραγματική αθροιστική εξοικονόμηση.
Το uv είναι το σπάνιο εργαλείο που είναι και πιο γρήγορο ΚΑΙ πιο απλό από αυτό που αντικαθιστά. Εάν γράφετε Python για να ζήσετε το 2026, αφιερώστε 10 λεπτά για να αλλάξετε ένα έργο. Η συνήθεια θα μεταφερθεί σε κάθε νέο έργο που αγγίζετε.
Επόμενο βήμα: το κομμάτι Python DevOps καλύπτει το uv, το ruff, το Docker και τη σύγχρονη στοίβα ανάπτυξης Python — 104 διαδραστικά μαθήματα.