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.py segí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:

  1. Ellenőrizze, hogy mely modulok vannak jelenleg betöltve; a parancssorba írja be:
     module list
  2. Ha a Python nincs a jelenleg betöltött modulok listáján, használja a module load parancsot a hozzáadásához; például:
     module list
  3. Ha a Python nincs a jelenleg betöltött modulok listáján, használja a module load parancsot:
    • 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
      • :
        1. Elérhető verziók ellenőrzése; a parancssorba írja be:
          1. :
             module avail python
          2. A preferált verzió betöltése; a parancssorba írja be (a version_number helyébe a preferált verziószámot írja be):
             module load python/version_number
    • 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 switch parancsot; a parancssorba például írja be (a current_version helyébe a jelenleg betöltött python modul verziószámát, a new_version helyébe pedig a kívánt verziószámot):
       module switch python/current_version python/new_version

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:

Megjegyzés:
Ha a csomagját a felhasználó 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:

  1. 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)
  2. A PYTHONPATH
  3. -ban felsorolt könyvtárak
  4. A futó Python telepítés verzió-specifikus site-packages könyvtára; például: <sys.prefix> a futó Python telepítés elérési útvonala; X.Y a futó Python telepítés verziószáma (például 3.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.

Megjegyzé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))
Megjegyzés:
A 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.

Kapcsolódó dokumentumok

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.