Kiegészítés 2019 január: Ha visszatér a blogra a MacOS Mojave-ra történő frissítés után, kérjük, olvassa el ezt a github-kiadványt a közös pyenv 'zlib not available' probléma megoldására.
Mielőtt elkezdenénk, nézzük át röviden a címben használt kifejezéseket:
- Több Python verzió : A Python különböző telepítései ugyanazon a gépen, például 2.7 és 3.4.
- Virtuális környezetek : elszigetelt, független környezetek, amelyekbe a Python és a projektspecifikus csomagok egy adott verziója egyaránt telepíthető, anélkül, hogy bármilyen más projektet érintene.
Itt három különböző eszközt fogunk megvizsgálni az ezekkel való együttműködéshez, és amikor szükség lehet rájuk. Fedezzük fel a következő esetek felhasználási eseteit:
venv
/pyvenv
pyenv
pyenv-virtualenv
Ha a Python egyetlen verzióját használja , mondjuk a 3.3+ verziót , és különféle virtuális környezeteket szeretne kezelni , akkor venv
mindenre szüksége van.
Ha a Python több , 3.3+ verzióját szeretné használni , virtuális környezettel vagy anélkül , folytassa a tovább olvasást pyenv
.
Ha Ön is szeretne dolgozni a Python 2-vel , akkor pyenv-virtualenv
ez egy megfontolandó eszköz.
venv
A Python 3.3+ verziótól a venv
csomag benne van. Ideális könnyű virtuális környezetek létrehozásához.
A Python 3.6-ig egy úgynevezett szkriptet pyvenv
is mellékeltek, mint burkolót venv
, de ezt már nem használták. A Python 3.8-ban teljesen eltávolítja. Pontosan ugyanaz a funkció érhető el a használat során venv
, és a meglévő dokumentációt frissíteni kell. Bárki érdeklődő elolvashatja a leértékelődés okait pyvenv
.
venv
a terminál paranccsal új környezet létrehozására szolgál:
$ python3 -m venv directory-name-to-create
aktiválva:
$ source name-given/bin/activate
és deaktiválva egyszerűen:
$ deactivate
Ha deaktiválása után teljesen el kell távolítania a környezetet, akkor futtathatja:
$ rm -r name-given
Alapértelmezés szerint az általa létrehozott környezet az Ön által használt Python aktuális verziója lesz. Ha dokumentációt ír, és azt szeretné, hogy az olvasó a Python helyes verzióját használja, megadhatja a fő és a kisebb verziószámot a parancsban, például:
$ python3.6 -m venv example-three-six
Ha az olvasó nem a 3.6-os verziót használja, akkor a parancs nem lesz sikeres, és hibaüzenetében jelzi. Bármelyik javító verzió (például 3.6.4) működni fog.
Amikor a környezet aktív, bármilyen csomag telepíthető rá pip
a szokásos módon. Alapértelmezés szerint az újonnan létrehozott környezet nem tartalmaz olyan csomagokat, amelyek már telepítve vannak a gépre. Mivel pip
önmagában nem feltétlenül lesz telepítve a gépre. Javasoljuk, hogy először frissíteni pip
a legújabb verzióra, a pip install --upgrade pip
.
A projektek általában rendelkeznek egy requirements.txt
fájllal, amely meghatározza annak függőségeit. Ez lehetővé teszi a parancsikon parancs számára pip install -r requirements.txt
az összes csomag gyors telepítését az újonnan létrehozott virtuális környezetbe. Csak a virtuális környezetben léteznek. Deaktiválva nem lesz elérhető, de újra aktiválva marad.
Ha nincs szüksége a Python további verzióinak használatára, akkor csak erre van szükség elszigetelt, projekt-specifikus, virtuális környezetek létrehozásához.
pyenv
Ha a Python több verzióját szeretné használni egyetlen gépen, akkor pyenv
ez egy általánosan használt eszköz a verziók telepítéséhez és váltásához. Ez nem tévesztendő össze a korábban említett leértékelt pyvenv
szkriptel. Nem tartozik a Python csomagjába, és külön kell telepíteni.
A pyenv
dokumentáció nagyszerű leírást tartalmaz a működéséről, ezért itt egyszerűen megnézzük, hogyan kell használni.
Először telepítenünk kell. Ha Mac OS X-et használ, ezt megtehetjük a Homebrew használatával, más esetben vegye figyelembe a többi telepítési lehetőséget.
$ brew update $ brew install pyenv
Ezután adja hozzá a következőket a shell parancsfájlok alja felé, hogy lehetővé tegye pyenv
a verziók automatikus módosítását az Ön számára:
eval "$(pyenv init -)"
Ehhez nyissa meg a használatban lévő shell parancsfájlt a via vagy segítségével $ ~/.zshrc
, és másolja és illessze be a fenti sort.$ ~/.bashrc
$ ~/.bash_profile
A futás pyenv versions
megmutatja, hogy mely Python verziók vannak jelenleg telepítve, a *
jelenleg használtak mellett. pyenv version
ezt közvetlenül mutatja, és python --version
felhasználható ennek ellenőrzésére.
További verzió telepítéséhez mondjuk 3.4.0
egyszerűen használja pyenv install 3.4.0
.
pyenv
négy helyen keresi a Python melyik verziójának használatát, elsőbbségi sorrendben:
- A
PYENV_VERSION
környezeti változó (ha meg van adva). Apyenv shell
paranccsal beállíthatja ezt a környezeti változót az aktuális shell munkamenetben. - Az alkalmazás-specifikus
.python-version
fájl az aktuális könyvtárban (ha van). A paranccsal módosíthatja az aktuális könyvtár.python-version
fájljátpyenv local
. - Az első
.python-version
megtalált fájl (ha van ilyen) az egyes szülőkönyvtárakban keresve, amíg el nem éri a fájlrendszer gyökerét. - A globális verziófájl. Ezt a fájlt a
pyenv global
paranccsal módosíthatja . Ha a globális verziófájl nincs, a pyenv feltételezi, hogy a "rendszer" Pythont szeretné használni. (Más szavakkal, bármilyen verzió is futna, ha a pyenv nem szerepelne a tiédbenPATH
.)
Amikor egy új projektet állítanak be, amely a Python 3.6.4 verziót használja, akkor pyenv local 3.6.4
a gyökérkönyvtárban fut. Ez egyszerre állítja be a verziót, és létrehoz egy .python-version
fájlt, hogy más közreműködők gépei vegyék fel.
A pyenv
parancsok teljes leírása a könyvjelzők közé tartozik.
pyenv és venv
A Python 3.3+ alkalmazással most már tudjuk, hogyan kell telepíteni és váltani a Python különböző verzióit, valamint hogyan lehet új virtuális környezeteket létrehozni.
Példaként tegyük fel, hogy egy olyan projektet hoztunk létre, amelynek a Python 3.4-et kellett használnia.
Először a pyenv local 3.4.0
.
Ha ezután futtatnánk, python3 -m venv example-project
egy új virtuális környezetet állítanánk be example-project
a helyileg engedélyezett Python 3.4.0 használatával.
Aktiváljuk a használatát source example-project/bin/activate
és elkezdhetjük a munkát.
Ezután opcionálisan dokumentálhatjuk, amelyet egy munkatársnak használnia kell python3.4 -m venv
. Ez azt jelenti, hogy akkor is, ha egy együttműködő nem használta a pyenv-t, a python3.4
parancs hibát vétene, ha a Python-verziójuk nem ugyanaz a fő- és mellékverziója (3. és 4.), ahogyan szándékoztuk.
Alternatív megoldásként választhatjuk, hogy egyszerűen megadjuk, hogy a 3.4.0-at kell használni, és utasíthatunk python3 -m venv
. Ha úgy gondoljuk, hogy minden ve rsion g reater mint 3,4 elfogadható, akkor mi is úgy dönt, hogy használja python3
felett python3.4
, mintha a közreműködő volt használva 3,6 akkor egyébként is hibaüzenetet kap. Ez egy projektspecifikus döntés.
pyenv-virtualenv
pyenv
használható mind a Python 2, mind a 3 verzió telepítésére. Amint azonban láttuk, venv
a Python 3.3-nál nagyobb verzióira korlátozódik.
pyenv-virtualenv
egy olyan eszköz a virtuális környezetek létrehozásához, amelyek integrálva vannak pyenv
a Python összes verziójához, és minden olyan verzióhoz használhatók. Továbbra is javasoljuk a hivatalos Python használatát, venv
ahol lehetséges. De ha például ezek alapján hoz létre virtuális környezetet 2.7.13
, akkor ez bókol pyenv
.
Az Anaconda és a Miniconda conda
környezetekkel is jól működik, ha ezeket már használja. Az úgynevezett eszköz virtualenv
is létezik. Itt nem szerepel, de a végén összekapcsolódik.
A telepítés után a pyenv
következő telepíthető a Homebrew (vagy alternatívák) használatával:
$ brew install pyenv-virtualenv
Ezután a .zshrc
( .bashrc
, vagy .bash_profile
(attól függően, hogy melyik héjat használja) adja hozzá a következőt az alja felé:
eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
Ez lehetővé teszi pyenv
a környezetek automatikus aktiválását és deaktiválását könyvtárak áthelyezésekor.
Új virtuális környezet létrehozásához használja:
$ pyenv virtualenv // for example $ pyenv virtualenv 2.7.10 my-virtual-env-2.7.10
A meglévő környezetek felsorolhatók:
$ pyenv virtualenvs
Aktiválva / deaktiválva:
$ pyenv activate $ pyenv deactivate
Írás közben activate
a figyelmeztetés prompt changing will be removed from future release
megjelenik a használatakor. Ez várhatóan csak (env-name)
a héjban való megjelenésre vonatkozik, nem pedig activate
maga a parancs használatára .
A telepítési követelmények az alábbiak szerint működnek venv
. Ellentétben venv
a rm -r
parancs nem szükséges eltávolítani környezetben, egy uninstall
parancs létezik.
Végső gondolatok
E három eszköz között képesek vagyunk együttműködni bármilyen projektben, függetlenül a Python verziójától vagy a szükséges függőségektől. Azt is tudjuk, hogyan kell dokumentálni a többi felhasználó számára beállított használati utasítást bármilyen projekten, amelyen dolgozunk.
Láthatjuk az indoklást is, melyik készletet kell használni, mivel nem minden fejlesztőnek lesz szüksége mindháromra.
Remélhetőleg ez hasznos volt, és hasznos referencia az alábbiakban hivatkozott dokumentációval együtt.
Köszönöm, hogy elolvasta! ?
Egyéb dolgok, amelyeket felfedeztem:
- ES és CommonJS modulok gúnyolása a jest.mock () használatával
- Kezdő útmutató az Amazon Elastic Container Service szolgáltatásához
Erőforrások
- Python virtuális környezetek: A Primer
- Amortizáló
pyvenv
- Python
venv
dokumentáció venv
vs.virtualenv
- Mi a különbség a venv, a pyvenv, a pyenv, a virtualenv, a virtualenvwrapper, a pipenv stb. Között?
- Telepítenem kell
pip
?