Python-pakker er samlinger af moduler (genanvendelig kode), der udvider og forbedrer funktionaliteten af Python-sprogets kernefunktionalitet. Python-udviklere bidrager til det officielle Python Package Index (PyPI) repository og gør deres pakker tilgængelige for Python-fællesskabet i henhold til open source-licensbetingelser. Python Packaging Authority (PyPA) forvalter arkivet og vedligeholder et standardsæt af værktøjer til opbygning, distribution og installation af Python-pakker.
På Indiana Universitys forsknings-supercomputere er der allerede installeret mange tredjepartspakker som supplement til almindeligt anvendte Python-byggerier. Hvis du har et unikt behov for en Python-pakke fra en tredjepart, som ikke allerede er installeret, kan du bruge pip
eller setup.py
til at installere pakken i din hjemmemappe. Hvis du ved, at flere forskere er interesseret i at bruge en Python-pakke, der ikke allerede er installeret, kan du anmode om at få den installeret som en systemdækkende sitepakke.
På denne side:
- Installer Python-pakker til personligt brug
- Installer dit brugermiljø
- Installer en pakke ved hjælp af
pip
- Installer en pakke ved hjælp af dens
setup.py
script
- Forstå modul-søgningsrækkefølgen
Installer Python-pakker til personligt brug
Installer dit brugermiljø
For at installere Python-pakker, skal du have Python tilføjet til dit brugermiljø. På Carbonate er Python som standard tilføjet til dit brugermiljø. På Big Red 3, eller hvis du tidligere har fjernet Python, skal du bruge følgende vejledning til at tilføje Python til dit brugermiljø:
- Kontroller hvilke moduler der i øjeblikket er indlæst; på kommandolinjen skal du indtaste:
module list
- Hvis Python ikke er på listen over aktuelt indlæste moduler, skal du bruge kommandoen
module load
til at tilføje det; f.eks:- For at tilføje standardversionen skal du på kommandolinjen indtaste følgende:
- :
module load python
- For at tilføje en version, der ikke er standardversionen, skal du angive følgende:
- Kontroller, hvilke versioner der er tilgængelige; på kommandolinjen indtastes:
- :
module avail python
- Lad den foretrukne version; på kommandolinjen indtastes (erstat
version_number
med det foretrukne versionsnummer):module avail python
- Lad den foretrukne version; på kommandolinjen indtastes
module load python/version_number
- :
- Kontroller, hvilke versioner der er tilgængelige; på kommandolinjen indtastes:
- :
- Hvis Python er opført blandt de aktuelt indlæste moduler, men du foretrækker eller har brug for at bruge en anden version, skal du fjerne det aktuelt indlæste modul, før du indlæser den anden version. Hvis du vil gøre dette med én kommando, skal du bruge
module switch
; på kommandolinjen skal du f.eks. indtaste (erstatcurrent_version
med versionsnummeret for det aktuelt indlæste modulpython
ognew_version
med det foretrukne versionsnummer):module switch python/current_version python/new_version
- For at tilføje standardversionen skal du på kommandolinjen indtaste følgende:
For at foretage permanente ændringer i dit miljø skal du redigere din~/.modules
-fil. Du kan læse mere under Brug en .modules-fil i din hjemmemappe til at gemme dit brugermiljø på en IU-forskningssupercomputer.
For at få flere oplysninger om brug af Modules til at konfigurere dit brugermiljø, se Brug Modules til at administrere dit softwaremiljø på IU’s forskningssupercomputere.
Installer en pakke ved hjælp af pip
Værktøjet pip
til pakkehåndtering, et af de standardværktøjer, der vedligeholdes af Python Package Authority (PyPA), er det anbefalede værktøj til installation af pakker fra Python Package Index (PyPI)-repositoriet.
For at installere en pakke fra PyPI-repositoriet (f.eks. foo
) skal du bruge kommandoen pip install
med --user
-flaget; f.eks.:
Optionen --user
anviser pip
til at hente og udpakke kildedistributionen for din pakke (f.eks. foo
) i brugerens site-packages
-mappe for den kørende Python; f.eks:
~/.local/lib/python3.6/site-packages/foo
Python søger automatisk i denne mappe efter moduler, så det er ikke nødvendigt at tilføje denne sti til miljøvariablen PYTHONPATH før denne.
Hvis du udelader indstillingen --user
, vil pip
forsøge at installere din pakke i den globale site-packages
-mappe (hvor du ikke har de nødvendige tilladelser); som følge heraf vil installationen mislykkes.
For mere om brug af pip
, se siden pip install i pip-brugervejledningen.
Installer en pakke ved hjælp af dens opsætning.py-scriptet
For at installere en Python-pakke fra en anden kilde end PyPI-repositoriet kan du selv hente og udpakke kildedistributionen og derefter bruge dens setup.py
-script til at installere pakken i brugerens site-packages
-mappe:
Optionen --user
anviser setup.py
til at installere pakken (f.eks. foo
) i brugermappen site-packages
for den kørende Python; f.eks.:
~/.local/lib/pythonX.Y/site-packages/foo
Python søger automatisk i denne mappe efter moduler, så det er ikke nødvendigt at tilføje denne sti til miljøvariablen PYTHONPATH i forvejen.
Hvis du udelader indstillingen --user
, vil setup.py
forsøge at installere pakken i den globale mappe site-packages
(hvor du ikke har de nødvendige tilladelser); som følge heraf vil installationen mislykkes.
Alternativt kan du bruge indstillingen --home
eller --prefix
til at installere din pakke på et andet sted (hvor du har de nødvendige tilladelser); f.eks. til at installere din pakke i en undermappe (f.eks. python-pkgs
):
site-packages
-mappe, skal du tilføje stien til den mappe til din PYTHONPATH-miljøvariabel i forvejen. Du kan læse mere om PYTHONPATH i PYTHONPATH og python import
-ordningen nedenfor. For mere om brug af setup.py
til at installere pakker, se Installation af Python-moduler (ældre version).
Forstå modul-søgningsrækkefølgen
Ved at vide, hvordan Python-fortolkeren reagerer på import
-angivelser, kan du afgøre, hvorfor et bestemt modul eller en bestemt pakke ikke indlæses, eller hvorfor en uventet version af en pakke indlæses, selv om den korrekte version er installeret, og stien til dens placering er angivet i din PYTHONPATH-miljøvariabel.
Når Python starter, søger den i de stier, der findes i sys.path
, en liste over mapper, der bestemmer fortolkerens søgesti for moduler. Variablen sys.path
initialiseres fra følgende steder, i denne rækkefølge:
- Den mappe, der indeholder det script, der bruges til at påkalde Python-fortolkeren (hvis fortolkeren påkaldes interaktivt, eller scriptet læses fra standardinput, forbliver dette første element,
path
, en tom streng, hvilket anviser Python til først at søge efter moduler i den aktuelle arbejdskatalog) - De mapper, der er anført i PYTHONPATH
- Den versionsspecifikke
site-packages
mappe for den kørende Python-installation; f.eks:<sys.prefix>/lib/pythonX.Y/site-packages
I dette eksempel er
<sys.prefix>
stien til den kørende Python-installation;X.Y
er versionsnummeret (f.eks.3.8
) for den kørende Python-installation.
Som standard importerer Python også modulet site.py
ved initialisering, hvilket tilføjer stedspecifikke stier til modulets søgesti (sys.path
), herunder stien til din bruger site-packages
-mappe inden for i din hjemmemappe; for eksempel (X.Y
vil være versionsnummeret for den kørende Python-installation):
~/.local/lib/pythonX.Y/site-packages
Når site.py
tilføjer stier til sys.path
, gennemsøger den dem for stikonfigurationsfiler (.pth
), som indeholder yderligere mapper, der tilføjes til sys.path
. Hvis en mappe indeholder flere .pth
-filer, behandler site.py
dem i alfabetisk rækkefølge.
Derimod indeholder nogle .pth
-filer indlejrede kommandoer, der indsætter mappeposter i begyndelsen af modulets søgesti (før standardbiblioteksstien). Som følge heraf vil et modul fra et af de indsatte kataloger blive indlæst i stedet for modulet af samme navn fra standardbibliotekskataloget. Dette kan være en uønsket og forvirrende adfærd, medmindre en sådan erstatning er tilsigtet.
Hvis dine import
-forespørgsler konsekvent forstyrres af site.py
– og .pth
-filer, så prøv at påkalde Python-fortolkeren med -S
(stort “S”):
python -S
Dette deaktiverer den automatiske import af site.py
og forhindrer som følge heraf, at den manipulerer sys.path
. Det forhindrer dog også site.py
i at tilføje din brugermappe site-packages
til sys.path
. Hvis du vil importere site.py
uden at tilføje din bruger site-packages
-mappe sys.path
til sys.path
, skal du påkalde Python med indstillingen -s
(lille “s”):
python -s
For at se, hvilke mapper Python gennemsøger, når du afgiver import
-kommandoer, skal du på kommandolinjen indtaste følgende
python -c "import sys; print ('\n'.join(sys.path))"
Alternativt kan du starte Python i interaktiv tilstand og derefter påkalde de samme kommandoer i denne rækkefølge (>>>
er Pythons primære prompt):
>>>import sys >>>print ('\n'.join(sys.path))
sys.path
er kun en redigerbar liste over strenge, som du kan redigere som enhver anden Python-liste. Undgå at redigere det første element i listen (path
), fordi mange pakker antager, at det henviser til den mappe, der indeholder det script, der bruges til at kalde Python-fortolkeren.