Régebbi függőségek
A régebbi csomagok elidőzhetnek, és a Python-kód boldogan fogja használni őket. Ez nem jelent problémát, ha a Python-szkriptjeit helyben kell futtatni, és nem ipari célokra. Az adatkutatók, a hallgatók, sőt a mindennapi feladataikat automatizáló rendszeres emberek is sok probléma nélkül használhatják a régebbi csomagokat.
A probléma akkor kezdődik, amikor elküldi a kódot a gyártásba. Amikor ezt megteszi, akkor valószínűleg csak a fő szkriptet küldi el, és nem az összes csomagfüggőséget. Például, ha írt egy mikroszolgáltatást, amelyet AWS Lambda funkcióként szállít, akkor az első néhány sor a következőképpen importálja a kérelem modult:
import kérelemAz AWS lambda által küldött kérési csomag eltér a régitől, és ennek következtében a program összeomolhat.
Konfliktusok
Konfliktusok is képbe kerülhetnek, amikor a különböző projektek ugyanazon csomag különböző verzióit használják. Lehet, hogy néhány régebbi projektednek szüksége van a régebbi pip csomagokra. De szükség lehet újabb projektekre más projektekhez. Fut a pip install -U
Python virtuális környezetek
Ha a Python bármelyik verzióját 3 felett használja.Az 5. ábra szerint a venv nevű beépített modult létrehozhatja úgynevezett Python virtuális környezeteknek. Ez a modul egy elszigetelt mappát vagy könyvtárat hoz létre, ahol az összes pip csomag és más függőség élhet. A mappa tartalmaz egy 'activ' szkriptet is. Amikor egy adott virtuális környezetet akar használni, egyszerűen futtassa ezt a szkriptet, amely után csak a mappában található csomagok érhetők el. Ha a pip install programot futtatja, akkor a csomagok ebbe a mappába kerülnek, és sehol máshol. Miután befejezte a környezet használatát, egyszerűen „deaktiválhatja” azt, és akkor csak a globális pip csomagok lesznek elérhetők.
Ha Ubuntu 18-at használ.04 és újabb verziók esetén a pip csomagkezelőt sem kell telepítenie az egész rendszerre. A Pip csak akkor létezhet a virtuális környezetben, ha ezt jobban szereti.
A venv telepítése és virtuális környezetek létrehozása
Ubuntu 18.A 04 LTS Python 3-mal kerül ki a dobozból.6.x, de a Python venv modul nincs telepítve, a pip sem. Telepítsük csak a venv-t.
$ apt install python3-venvEzután megyünk ahhoz a könyvtárhoz, amelyen belül létre szeretné hozni a Virtuális Környezet könyvtárat. Számomra ez a ~ / project1
$ cd ~ / project1Hozza létre a venv-t a következő paranccsal, vegye észre, hogy a my-env csak a környezet neve, bárhonnan megnevezheti:
$ python3 -m venv my-envMegjegyzés: Egyes Python3 telepítések, például a Windows rendszeren elérhetőek, a Python tolmácsot csak a python és nem a python3 használatával hívja meg, de ez rendszerről rendszerre változik. A következetesség kedvéért csak python3-at fogok használni.
Miután a parancs végrehajtása befejeződött, észrevesz egy új mappát ~ / project1 / my-evn. A my-env virtuális környezet aktiválásához:
- Fuss,
$ source ~ / project1 / my-env / bin / activ
ha Bash-t használ.
Vannak alternatív parancsfájlok, amelyeket aktiválásnak hívnak.hal és aktiválja.csh azoknak az embereknek, akik halat, illetve csh kagylót használnak. - Windows rendszeren a parancsfájl a következő futtatással hívható meg:
>.\ my-env \ Scripts \ activ.denevér
ha parancssort használ, vagy,>.\ my-env \ Scripts \ activ.ps1
ha PowerShell-t használ.
Virtuális környezetek használata
Miután sikeresen futtatta a szkriptet, észreveszi, hogy a prompt megváltozik valamire, mint az alább látható, mostantól telepítheti a csomagokat a pip használatával:
(my-env) $ pip3 telepítési kérelmek## A 'pip freeze' paranccsal felsorolhatjuk a telepített csomagokat
(my-env) $ pip3 befagy
igazolás == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-resources == 0.0.0
kérések == 2.20.1
urllib3 == 1.24.1
Amíg a virtuális környezet aktív (amint azt a felszólítás jelzi), az összes csomag csak a virtuális környezet könyvtárába (my-env) kerül mentésre, függetlenül attól, hogy hol tartózkodik a fájlrendszerben.
A virtuális környezetből való kilépéshez írja be a deactivate parancsot a parancssorba, és visszatér a Python rendszerszintű telepítéséhez. Észreveheti, hogy az imént telepített új csomagok nem jelennek meg a globális pip telepítésben.
A virtuális környezet megszabadításához egyszerűen törölje a my-env mappát, amely a modul futtatása után jött létre. Ezekből a környezetekből annyit hozhat létre, amennyit csak akar.
Következtetés
A venv modullal a virtuális környezetek már elérhetők a Python standard szolgáltatásaként, különösen, ha Pythonról telepít.org. Korábban sok harmadik fél által megvalósított implementációnk volt virtuális, pyenv stb.
Ez egyre több olyan duzzadt szoftvert eredményezett, mint az Anaconda, amely különösen népszerű az adatkutatók körében. Jó, ha végre van egy leegyszerűsítő eszközünk a Python csomagok kezelésére anélkül, hogy sok más, nem kapcsolódó szemetet kellene telepítenünk. A venv-ről itt olvashat bővebben.