Python virtuális környezetek 2026-ban: venv, uv, pipx, poetry – mikor melyiket használjuk
Minden Python-oktatóanyag azt mondja, hogy „használjon virtuális környezetet”, és továbbmegy. Ez megteszi az extra mérföldet: micsoda IS valójában egy venv, a négy eszköz, amelyet érdemes tudni 2026-ban, egy 60 másodperces döntési fa a megfelelő kiválasztásához, és a két hiba, amelyek egy héten belül megzavarják a beállítást.
Milyen is valójában a virtuális környezet
A venv egy egy Python interpreter szimbolikus hivatkozást és egy privát `site-packages/` könyvtárat tartalmaz. Amikor "aktiválva van", a PATH a <venv>/bin elé kerül, így a python és a pip a shellben a venv másolataira mutat. A pip install X a venv site-packages/-jába ír, nem a rendszer Python-jába.
Ennyi. Nincs varázslat. Ez egy szimbolikus hivatkozást és egy "pyvenv.cfg" fájlt tartalmazó mappa.
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
Minden más (szkriptek aktiválása, wrapperek, csomagkezelők) a kényelem ezen a formán felül.
Miért van szüksége rá, mindig
A venv nélkül a pip install X a rendszer Python site-packages/ fájljába írja. Három probléma:
1. Konfliktusok. Az A projekthez django==4.2; A B projektnek szüksége van a „django==5.1” paraméterre. Venv nélkül lehetetlen.
2. Reproducálhatóság. A "működik a gépemen" egy rendszer-Python probléma. A venv pillanatkép A környezet.
3. Tisztítás. Töröl egy projektet? Törölje a venv mappát. A System-Python-telepítések örökre felhalmozódnak.
A macOS 12+ rendszeren és a legtöbb Linux disztribúción a system-Python mostantól az operációs rendszer tulajdona – a pip akár meg is tagadhatja a telepítést „--break-system-packages” nélkül. Ez egy tipp.
A 4 eszköz, amelyet érdemes tudni
1. venv — az stdlib alapvonal
Minden Python 3.3+ telepítéssel együtt szállítjuk. Nulla függőség. Az univerzális visszaesés:
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
Használja, ha: oktatóanyagot ír, annak biztosítása, hogy a szkript mindenhol működjön, vagy olyan zárolt CI-ben, ahol semmit sem telepíthet.
2. "uv" – a modern alapértelmezett (2026)
Rozsdás írás, 10-100x gyorsabb, mint a pip. A venv + pip + pip-tools + pyenv-download-python helyettesíti. Tekintse meg uv deep-dive oldalunkat a teljes körútért.
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
Használja, amikor: bármely 2026-os projekt – egyéni, csapat, CI, Docker. A sebességkülönbség a hideg gyorsítótáron valós (45s pip → 2s uv egy tipikus Django projektnél).
3. pipx — CLI-eszközökhöz
Amikor olyan parancssori felületet telepít, mint a ruff, httpie, black, youtube-dl, mypy, akkor nem szeretné, hogy a projekt venv-je legyen (miért függjön a rufftól, hogy az import project.things működjön?). És nem akarod, hogy a Python rendszerben (ütközések). A pipx' mindegyiket saját izolált venv-be helyezi, de a CLI-t globálisan teszi közzé:
BASHpipx install ruff pipx install httpie pipx install black ruff check . # works from anywhere, no activation httpie GET api.github.com black .
Amikor: Python-alapú parancssori felület telepítése. Ökölszabály: "pipx install X", ha X olyan végrehajtható fájlt szállít, amelyet bármelyik projektből futtatna; "uv pip install X", ha az X egy olyan könyvtár, amelyet "importál".
Modern csere: az uv tool install ruff ugyanezt csinálja külön pipx telepítés nélkül. Válassz bármelyiket.
4. „költészet” – érett függőségi szekrény (csökkenő részesedés)
Az uv megjelenése előtt a "költészet" volt a modern csomagolóeszköz. Kiváló függőségi feloldó, determinisztikus poetry.lock, szoros integráció a pyproject.toml-lel. Még mindig szilárd – de lassabb, mint az UV, és növeli a kognitív költségeket.
BASHpoetry new my-project poetry add fastapi poetry install poetry run pytest poetry publish
Használja, ha: a meglévő projekt már használ költészetet, vagy költészetspecifikus bővítményekre van szüksége (pl. "költészet-bővítmény-export"). A 2026-os ÚJ projektek esetében az „uv” gyorsabban eljuttatja Önt kisebb helyigénnyel.
A 60 másodperces döntési fa
ennyi. Manapság a Python fejlesztők 90%-a választhat erről a listáról anélkül, hogy valaha is szüksége lenne a "pyenv", "virtualenvwrapper", "pew" vagy "conda" kifejezésre.
Conda – a különleges eset
A conda egy külön univerzum: csomagkezelő + venv menedzser + Python disztribútor + C-könyvtárkezelő, elsősorban tudományos Python számára. Ha nehéz numerikus munkát végez a "numpy" / "scipy" / "pandas" / GPU-veremekkel, amelyekhez egyező CUDA + cuDNN verziók szükségesek, a "miniconda" még mindig megérheti – az előre lefordított binárisok órákat takarítanak meg a pip ellen.
Egyébként: a sima uv már tudományos stackeken is versenyképes (a numpy / pandas telepítések másodpercek, nem percek). Ne nyúljon a condához, hacsak nincs kifejezetten szüksége egy olyan C-könyvtárra, amelyet nem tud könnyen előállítani.
A két hiba, amely egy héten belül megszakítja a beállítást
1. A .venv/ lekötése a git-be
A venv a következőket tartalmazza:
- Abszolút útvonalak az adott Python-telepítéshez.
- Lefordított
.pycfájlok. - OS-specifikus bináris fájlok.
Vállalja ezt → a Windows rendszerű csapattársa nem tud semmit futtatni. ELŐSZÖR adja hozzá a .venv/ (és venv/, .env/) karakterláncot a .gitignore-hoz, majd hozza létre a venv-t.
2. Aktiválás rossz shellben
A source .venv/bin/activate csak a CURRENT shellben állítja be az env vars-t. Ha új terminállapot nyit meg, akkor visszatér a Python rendszerhez. Két biztonságos minta:
1. Minden munkamenet újraaktiválása – a szabványos folyamat.
2. `uv run` / `poetry run` / `python -m project` – soha nem aktiválódik. Futtassa a parancsokat egy új, az eszköz előtagjával ellátott shellből. Kiváló Makefiles, CI, npm-scriptek, git hook-okban.
Szabály a szkriptekre: ha egysoros CI-ből vagy Makefile-ból fut, NE aktiválja – használja az „uv run pytest” parancsot vagy a „.venv/bin/pytest” teljes elérési utat. Az aktiválás csak interaktív shellekre vonatkozik.
Migráció az eszközök között
pip + venv → uv:
BASHrm -rf .venv uv venv uv pip install -r requirements.txt
A Requirements.txt továbbra is szó szerint működik. Két perc.
költészet → uv:
BASHuvx migrate-to-uv # community tool, converts pyproject.toml
venv → költészet:
BASHpoetry init poetry add $(pip freeze | cut -d= -f1)
Ellenőrzés
A beállítás után mindig ellenőrizze, MELYIK Python + pip-et használ:
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
Ha a which python megjeleníti a rendszer elérési útját az aktiválás után, akkor valami nem működik – általában egy olyan alhéjban aktiváltad, amely már kilépett.
A virtuális környezet azon kevés Python-témák egyike, ahol a modern válasz (2026) valóban egyszerűbb, mint a történelmi válasz. "uv" az új projektekhez, "venv" a szkriptekhez, "pipx" a CLI-khez. Kész.
Következő lépés: a Python DevOps pálya lefedi az uv + ruff + Docker + a modern Python telepítési verem – gyakorlatias, valódi Python futtatását a böngészőben.