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:
- 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 load
parancsot 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 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
- :
- 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_number
helyé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 switch
parancsot; a parancssorba például írja be (acurrent_version
helyébe a jelenleg betöltöttpython
modul verziószámát, anew_version
helyé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-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á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.