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ø:

  1. Kontroller hvilke moduler der i øjeblikket er indlæst; på kommandolinjen skal du indtaste:
     module list
  2. 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:
        1. Kontroller, hvilke versioner der er tilgængelige; på kommandolinjen indtastes:
          1. :
             module avail python
          2. Lad den foretrukne version; på kommandolinjen indtastes (erstat version_number med det foretrukne versionsnummer):
             module avail python
          3. Lad den foretrukne version; på kommandolinjen indtastes
             module load python/version_number
    • 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 (erstat current_version med versionsnummeret for det aktuelt indlæste modul python og new_version med det foretrukne versionsnummer):
       module switch python/current_version python/new_version

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):

Note:
Hvis du installerer din pakke til en anden placering end brugerens 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:

  1. 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)
  2. De mapper, der er anført i PYTHONPATH
  3. 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.

Note:

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))
Bemærk:
Variablen 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.

Relaterede dokumenter

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.