Εικονικά περιβάλλοντα Python το 2026: venv, uv, pipx, ποίηση — Πότε να χρησιμοποιήσετε ποιο
Κάθε σεμινάριο Python λέει "χρησιμοποιήστε ένα εικονικό περιβάλλον" και προχωρά. Αυτό κάνει το επιπλέον μίλι: τι ΕΙΝΑΙ στην πραγματικότητα ένα venv, τα τέσσερα εργαλεία που αξίζει να γνωρίζετε το 2026, ένα δέντρο αποφάσεων 60 δευτερολέπτων για την επιλογή του σωστού και τα δύο λάθη που χαλούν τη ρύθμιση σας μέσα σε μια εβδομάδα.
Τι είναι στην πραγματικότητα ένα εικονικό περιβάλλον
Το venv είναι ένας κατάλογος που περιέχει έναν συμβολικό σύνδεσμο διερμηνέα Python συν ένα ιδιωτικό "site-packages/". Όταν είναι "ενεργοποιημένο", το "PATH" εμφανίζεται ως "<venv>/bin", οπότε το "python" και το "pip" στο κέλυφός σας δείχνουν στα αντίγραφα του venv. Το "pip install X" γράφει στα "site-packages/" του venv, όχι στα Python του συστήματος.
Αυτό είναι όλο. Καμία μαγεία. Είναι ένας φάκελος με συμβολικό σύνδεσμο και "pyvenv.cfg".
BASH$ python -m venv .venv $ ls .venv/ bin/ include/ lib/ pyvenv.cfg $ cat .venv/pyvenv.cfg home = /opt/homebrew/opt/python@3.13/bin include-system-site-packages = false version = 3.13.2
Όλα τα άλλα (ενεργοποίηση σεναρίων, περιτυλίγματα, διαχειριστές πακέτων) είναι ευκολία πάνω από αυτό το σχήμα.
Γιατί χρειάζεστε ένα, πάντα
Χωρίς venv, το "pip install X" γράφει στο σύστημά σας τα "site-packages/" της Python. Τρία προβλήματα:
1. Συγκρούσεις. Το έργο Α χρειάζεται django==4,2; Το έργο Β χρειάζεται django==5,1. Αδύνατον χωρίς venvs.
2. Αναπαραγωγιμότητα. Το "Works on my machine" είναι πρόβλημα συστήματος-Python. Ένα στιγμιότυπο venv ΕΙΝΑΙ το περιβάλλον.
3. Εκκαθάριση. Διαγραφή έργου; Διαγράψτε τον φάκελο venv του. Οι εγκαταστάσεις System-Python συσσωρεύονται για πάντα.
Στο macOS 12+ και στις περισσότερες διανομές Linux, το system-Python ανήκει πλέον στο λειτουργικό σύστημα** — το pip μπορεί ακόμη και να αρνηθεί την εγκατάσταση χωρίς «--break-system-packages». Αυτό είναι μια υπόδειξη.
Τα 4 εργαλεία που αξίζει να γνωρίζετε
1. venv — η βασική γραμμή stdlib
Αποστέλλεται με κάθε εγκατάσταση Python 3.3+. Μηδενικές εξαρτήσεις. Η καθολική εναλλακτική:
BASHpython -m venv .venv # create source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt deactivate # or close the shell
Χρησιμοποιήστε το όταν: γράφετε ένα σεμινάριο, διασφαλίζετε ότι ένα σενάριο λειτουργεί παντού ή σε κλειδωμένο CI όπου δεν μπορείτε να εγκαταστήσετε τίποτα.
2. uv — η σύγχρονη προεπιλογή (2026)
Σκουριασμένα, 10-100 φορές πιο γρήγορα από το pip. Αντικαθιστά το venv + pip + pip-tools + pyenv-download-python. Δείτε το uv deep-dive για την πλήρη περιήγηση.
BASHuv venv # create venv (uses current Python) uv venv --python 3.13 # or download + pin a version uv pip install -r requirements.txt uv run pytest # run without activating uv add fastapi # append to pyproject.toml + install uv sync # install exactly what pyproject.toml says
Χρήση όταν: οποιοδήποτε έργο του 2026 — σόλο, ομάδα, CI, Docker. Η διαφορά ταχύτητας σε μια κρύα μνήμη cache είναι πραγματική (45s pip → 2s uv σε ένα τυπικό έργο Django).
3. «pipx» — για εργαλεία CLI
Όταν εγκαθιστάτε ένα CLI όπως «ruff», «httpie», «black», «youtube-dl», «mypy», δεν το θέλετε στο venv του έργου σας (γιατί να εξαρτάται από το «ruff» για να λειτουργήσει το «import project.things»;). Και δεν το θέλετε στο σύστημα Python (συγκρούσεις). Το "pipx" τοποθετεί το καθένα στο δικό του απομονωμένο venv αλλά εκθέτει το CLI παγκοσμίως:
BASHpipx install ruff pipx install httpie pipx install black ruff check . # works from anywhere, no activation httpie GET api.github.com black .
Χρήση όταν: εγκατάσταση ενός CLI που βασίζεται σε Python. Εμπειρικός κανόνας: «pipx install X» εάν το X αποστέλλει ένα εκτελέσιμο αρχείο που θα εκτελούσατε από οποιοδήποτε έργο. «Uv pip install X» εάν το X είναι μια βιβλιοθήκη που «εισάγετε».
Σύγχρονη αντικατάσταση: Το "uv tool install ruff" κάνει το ίδιο πράγμα χωρίς ξεχωριστή εγκατάσταση pipx. Διαλέξτε ένα από τα δύο.
4. «ποίηση» — ώριμη εξάρτηση-ντουλάπι (φθίνουσα μερίδα)
Πριν από την προσγείωση της υπεριώδους ακτινοβολίας, η «ποίηση» ήταν το καλύτερο εργαλείο για τη σύγχρονη συσκευασία. Εξαιρετική λύση εξάρτησης, ντετερμινιστικό «poetry.lock», στενή ενοποίηση με το «pyproject.toml». Ακόμα σταθερό — αλλά πιο αργό από το UV και προσθέτει γνωστικό κόστος.
BASHpoetry new my-project poetry add fastapi poetry install poetry run pytest poetry publish
Χρήση όταν: το υπάρχον έργο χρησιμοποιεί ήδη ποίηση ή χρειάζεστε πρόσθετα ειδικά για την ποίηση (π.χ. "poetry-plugin-export"). Για ΝΕΑ έργα το 2026, το "uv" σας μεταφέρει πιο γρήγορα με μικρότερο αποτύπωμα.
Το δέντρο αποφάσεων των 60 δευτερολέπτων
Αυτό είναι όλο. Το 90% των προγραμματιστών Python σήμερα μπορούν να επιλέξουν από αυτήν τη λίστα χωρίς να χρειάζονται ποτέ «pyenv», «virtualenvwrapper», «pew» ή «conda».
Κόντα — η ειδική περίπτωση
Το «conda» είναι ένα ξεχωριστό σύμπαν: διαχειριστής πακέτων + διαχειριστής venv + διανομέας Python + διαχειριστής βιβλιοθήκης C, κυρίως για την επιστημονική Python. Εάν κάνετε βαριά αριθμητική εργασία με στοίβες "numpy" / "scipy" / "pandas" / GPU που χρειάζονται αντιστοιχισμένες εκδόσεις CUDA + cuDNN, το "miniconda" μπορεί να αξίζει τον κόπο — τα προμεταγλωττισμένα δυαδικά αρχεία εξοικονομούν ώρες έναντι pip.
Διαφορετικά: το απλό UV είναι πλέον ανταγωνιστικό και σε επιστημονικές στοίβες (οι εγκαταστάσεις numpy / panda είναι δευτερόλεπτα, όχι λεπτά). Μην ψάξετε για conda εκτός και αν χρειάζεστε συγκεκριμένα ένα κουκούτσι βιβλιοθήκης C που δεν μπορεί να παραχθεί εύκολα.
Τα δύο λάθη που σου χαλάνε το setup μέσα σε μια εβδομάδα
1. Υποβολή «.venv/» στο git
Ένα venv περιέχει:
- Απόλυτες διαδρομές προς τη συγκεκριμένη εγκατάσταση Python.
- Μεταγλωττισμένα αρχεία
.pyc. - Δυαδικά που είναι ειδικά για το λειτουργικό σύστημα.
Δεσμευτείτε ότι → ο συμπαίκτης σας στα Windows δεν μπορεί να τρέξει τίποτα. Προσθέστε «.venv/» (και «venv/», «.env/») στο «.gitignore» σας ΠΡΩΤΑ και, στη συνέχεια, δημιουργήστε το venv.
2. Ενεργοποίηση σε λάθος κέλυφος
Το "source .venv/bin/activate" ορίζει τα env vars μόνο στο CURRENT κέλυφος. Εάν ανοίξετε μια νέα καρτέλα τερματικού, επιστρέφετε στο σύστημα Python. Δύο ασφαλή μοτίβα:
1. Επανενεργοποιήστε κάθε περίοδο λειτουργίας — η τυπική ροή.
2. `uv run` / `poetry run` / `python -m project` — ποτέ δεν ενεργοποιείται καθόλου. Εκτελέστε εντολές από ένα νέο κέλυφος με το πρόθεμα του εργαλείου. Εξαιρετικό σε Makefiles, CI, npm-scripts, git hooks.
Κανόνας για σενάρια: εάν πρόκειται για εκτέλεση μιας γραμμής από CI ή Makefile, ΜΗΝ ενεργοποιήσετε — χρησιμοποιήστε το «uv run pytest» ή την πλήρη διαδρομή «.venv/bin/pytest». Η ενεργοποίηση είναι μόνο για διαδραστικά κελύφη.
Μετανάστευση μεταξύ εργαλείων
pip + venv → uv:
BASHrm -rf .venv uv venv uv pip install -r requirements.txt
Το Requirements.txt συνεχίζει να λειτουργεί αυτολεξεί. Δύο λεπτά.
ποίηση → uv:
BASHuvx migrate-to-uv # community tool, converts pyproject.toml
venv → ποίηση:
BASHpoetry init poetry add $(pip freeze | cut -d= -f1)
Επαλήθευση
Μετά τη ρύθμιση, ελέγχετε πάντα ΠΟΙΟ Python + pip χρησιμοποιείτε:
BASH$ which python /path/to/project/.venv/bin/python # ✅ venv /opt/homebrew/bin/python # ❌ system, activation didn't take $ which pip /path/to/project/.venv/bin/pip # ✅ venv $ python -c "import sys; print(sys.prefix)" /path/to/project/.venv # ✅ venv
Εάν το "ποιο python" εμφανίζει μια διαδρομή συστήματος μετά την ενεργοποίηση, κάτι είναι απενεργοποιημένο — συνήθως ενεργοποιήσατε σε ένα υποκέλυφος που έχει ήδη βγει.
Τα εικονικά περιβάλλοντα είναι ένα από τα λίγα θέματα Python όπου η σύγχρονη απάντηση (2026) είναι πραγματικά πιο απλή από την ιστορική απάντηση. «uv» για νέα έργα, «venv» για σενάρια, «pipx» για CLI. Γινώμενος.
Επόμενο βήμα: το κομμάτι Python DevOps καλύπτει το uv + ruff + Docker + τη σύγχρονη στοίβα ανάπτυξης Python — πρακτική με πραγματική Python που εκτελείται στο πρόγραμμα περιήγησής σας.