A Python csomagok olyan modulok (újrafelhasználható kód) gyűjteményei, amelyek kibővítik és javítják a Python nyelv alapvető funkcióit. A Python fejlesztők hozzájárulnak a hivatalos Python Package Index (PyPI) tárolóhoz, így csomagjaikat nyílt forráskódú licencfeltételek mellett teszik elérhetővé a Python közösség számára. A Python Packaging Authority (PyPA) kezeli az adattárat, és szabványos eszközkészletet tart fenn a Python-csomagok összeállításához, terjesztéséhez és telepítéséhez.
Az Indiana Egyetem kutatási szuperszámítógépein már számos harmadik féltől származó csomag van telepítve, hogy kiegészítse a gyakran használt Python-összeállításokat. Ha egyedi igénye van egy olyan harmadik féltől származó Python-csomagra, amely még nincs telepítve, akkor a pip vagy setup.py segítségével telepítheti a csomagot az otthoni könyvtárába. Ha tudja, hogy több kutató is szeretne használni egy még nem telepített Python-csomagot, kérheti, hogy az egész rendszerre kiterjedő helyszíni csomagként telepítsék.
Az oldalon:
- Python csomagok telepítése személyes használatra
- Felhasználói környezet beállítása
- Telepítsen egy csomagot a
pip - Telepítsen egy csomagot a
setup.pysegítségével. script
- A modulok keresési sorrendjének megismerése
Python csomagok telepítése személyes használatra
A felhasználói környezet beállítása
A Python csomagok telepítéséhez, Pythont hozzá kell adnia a felhasználói környezetéhez. A Carbonate rendszeren a Python alapértelmezés szerint hozzá van adva a felhasználói környezetedhez. Big Red 3-on, vagy ha korábban eltávolította a Pythont, a következő utasításokkal adhatja hozzá a Pythont a felhasználói környezetéhez:
- Ellenőrizze, hogy mely modulok vannak jelenleg betöltve; a parancssorba írja be:
module list
- Ha a Python nincs a jelenleg betöltött modulok listáján, használja a
module loadparancsot a hozzáadásához; például:module list
- Ha a Python nincs a jelenleg betöltött modulok listáján, használja a
module loadparancsot:- Az alapértelmezett verzió hozzáadásához a parancssorba írja be:
- pl:
module load python
- Egy nem alapértelmezett verzió hozzáadásához:
module load python
- :
- Elérhető verziók ellenőrzése; a parancssorba írja be:
- :
module avail python
- A preferált verzió betöltése; a parancssorba írja be (a
version_numberhelyébe a preferált verziószámot írja be):module load python/version_number
- :
- Elérhető verziók ellenőrzése; a parancssorba írja be:
- pl:
- Ha a Python szerepel a jelenleg betöltött modulok között, de egy másik verziót szeretne vagy kell használni, akkor a másik verzió betöltése előtt el kell távolítania a jelenleg betöltött modult. Ha ezt egy paranccsal szeretné megtenni, használja a
module switchparancsot; a parancssorba például írja be (acurrent_versionhelyébe a jelenleg betöltöttpythonmodul verziószámát, anew_versionhelyébe pedig a kívánt verziószámot):module switch python/current_version python/new_version
- Az alapértelmezett verzió hozzáadásához a parancssorba írja be:
A környezet állandó módosításához szerkessze meg a~/.modules fájlt. További információért lásd: A .modules fájl használata az otthoni könyvtárában a felhasználói környezet mentéséhez az IU kutatási szuperszámítógépén.
A modulok használatáról a felhasználói környezet konfigurálásához lásd: Modulok használata a szoftverkörnyezet kezeléséhez az IU kutatási szuperszámítógépein.
Pakett telepítése a pip használatával
A pip csomagkezelő eszköz, a Python Package Authority (PyPA) által karbantartott szabványos eszközök egyike, a Python Package Index (PyPI) tárolóból származó csomagok telepítésének ajánlott eszköze.
A PyPI-tárból származó csomag (például foo) telepítéséhez használja a pip install parancsot a --user jelzővel; például:
A --user opció utasítja a pip-t, hogy a csomag (például foo) forráselosztását töltse le és csomagolja ki a futtatott Python felhasználói site-packages könyvtárába; például:
~/.local/lib/python3.6/site-packages/foo
A Python automatikusan megkeresi ezt a könyvtárat a modulok után, így ennek az útvonalnak a PYTHONPATH környezeti változóba való beillesztése nem szükséges.
Ha kihagyja a --user opciót, a pip megpróbálja a csomagot a globális site-packages könyvtárba telepíteni (ahol nem rendelkezik a szükséges jogosultságokkal); ennek eredményeként a telepítés sikertelen lesz.
A pip használatáról bővebben a pip install oldalon, a pip felhasználói kézikönyvben olvashat.
A csomag telepítése a setup segítségével.py script
Hogy egy Python csomagot a PyPI tárolótól eltérő forrásból telepítsen, letöltheti és kicsomagolhatja a forrás disztribúciót saját maga, majd annak setup.py scriptjével telepítheti a csomagot a felhasználói site-packages könyvtárba:
A --user opció utasítja a setup.py-t, hogy a csomagot (például foo) a futtatott Python felhasználói site-packages könyvtárába telepítse; például:
~/.local/lib/pythonX.Y/site-packages/foo
A Python automatikusan megkeresi ezt a könyvtárat a modulok után, így ennek az útvonalnak a PYTHONPATH környezeti változóhoz való előtagolása nem szükséges.
Ha elhagyja a --user opciót, a setup.py megpróbálja a csomagot a globális site-packages könyvtárba telepíteni (ahol nem rendelkezik a szükséges jogosultságokkal); ennek következtében a telepítés sikertelen lesz.
Alternatívaként használhatja a --home vagy --prefix opciót, hogy a csomagot egy másik helyre telepítse (ahol rendelkezik a szükséges engedélyekkel); például a csomagot egy alkönyvtárba (például python-pkgs) telepítse:
site-packages könyvtárától eltérő helyre telepíti, akkor a PYTHONPATH környezeti változóba be kell írnia az adott könyvtár elérési útját. A PYTHONPATH-ról bővebben lásd alább a PYTHONPATH és a python import sorrendben. A csomagok telepítésére szolgáló setup.py használatáról bővebben lásd: Python modulok telepítése (Legacy verzió).
A modulok keresési sorrendjének megértése
Annak ismerete, hogy a Python-értelmező hogyan reagál a import utasításokra, segíthet meghatározni, hogy miért nem töltődik be egy adott modul vagy csomag, vagy miért töltődik be egy csomag váratlan verziója annak ellenére, hogy a megfelelő verzió telepítve van, és a PYTHONPATH környezeti változóban szerepel a helyéhez vezető útvonal.
A Python indításakor a sys.path könyvtárak listájában található elérési utakat keresi, amely meghatározza az értelmező modulok keresési útvonalát. A sys.path változó a következő helyekről inicializálódik, ebben a sorrendben:
- A Python-értelmező meghívásához használt szkriptet tartalmazó könyvtár (ha az értelmezőt interaktívan hívjuk meg, vagy a szkriptet a standard bemenetről olvassuk be, ez az első elem,
path, üres karakterlánc marad, ami arra utasítja a Pythont, hogy először az aktuális munkakönyvtárban lévő modulokat keresse) - A PYTHONPATH
- -ban felsorolt könyvtárak
- A futó Python telepítés verzió-specifikus
site-packageskönyvtára; például:<sys.prefix> a futó Python telepítés elérési útvonala; X.Ya futó Python telepítés verziószáma (például3.8).
A Python alapértelmezés szerint inicializáláskor a site.py modult is importálja, amely a modulkeresési útvonalhoz (sys.path) helyspecifikus elérési utakat ad hozzá, beleértve a felhasználó site-packages könyvtárának elérési útvonalát az otthoni könyvtárában; például (X.Y lesz a futó Python telepítés verziószáma):
~/.local/lib/pythonX.Y/site-packages
Amint a site.py hozzáadja az elérési utakat a sys.path-hoz, átvizsgálja azokat az elérési útvonal-konfigurációs (.pth) fájlok után, amelyek további könyvtárakat tartalmaznak, amelyek hozzáadódnak a sys.path-hoz. Ha egy könyvtár több .pth fájlt tartalmaz, a site.py ábécésorrendben dolgozza fel őket.
Néhány .pth fájl azonban olyan beágyazott parancsokat tartalmaz, amelyek a modul keresési útvonalának elejére (a szabványos könyvtári útvonal elé) könyvtárbejegyzéseket illesztenek. Ennek eredményeképpen a beillesztett könyvtárak egyikéből származó modul betöltődik a szabványos könyvtárkönyvtár könyvtárából származó azonos nevű modul helyett. Ez nemkívánatos és zavaró viselkedés lehet, hacsak nem szándékos az ilyen helyettesítés.
Ha a import kéréseket a site.py és .pth fájlok következetesen megzavarják, próbálja meg a Python-értelmezőt a -S (nagybetűs “S”) meghívásával hívni:
python -S
Ez kikapcsolja a site.py automatikus importálását, és ennek következtében megakadályozza a sys.path manipulálását. Ugyanakkor megakadályozza azt is, hogy a site.py hozzáadja a site-packages felhasználói könyvtárát a sys.path-hoz. A site.py importálásához anélkül, hogy a felhasználói site-packages könyvtárat hozzáadná a sys.path-hoz, hívja meg a Pythont a -s (kisbetűs “s”) opcióval:
python -s
Hogy lássa, mely könyvtárakat vizsgálja a Python a import parancsok kiadásakor, a parancssorban írja be:
python -c "import sys; print ('\n'.join(sys.path))"
Alternatívaként indítsa el a Pythont interaktív módban, majd hívja elő ugyanazokat a parancsokat ebben a sorrendben (a >>> a Python elsődleges promptja):
>>>import sys >>>print ('\n'.join(sys.path))
sys.path változó csak egy szerkeszthető lista, amelyet ugyanúgy szerkeszthet, mint bármely más Python listát. Kerülje a lista első elemének (path) szerkesztését, mert sok csomag feltételezi, hogy ez a Python-értelmező meghívásához használt szkriptet tartalmazó könyvtárra utal.