Python-paket är samlingar av moduler (återanvändbar kod) som utökar och förbättrar funktionaliteten hos kärnspråket Python. Python-utvecklare bidrar till det officiella förrådet PyPI (Python Package Index) och gör sina paket tillgängliga för Pythongemenskapen enligt licensvillkor för öppen källkod. Python Packaging Authority (PyPA) förvaltar arkivet och upprätthåller en standarduppsättning av verktyg för att bygga, distribuera och installera Pythonpaket.

På Indiana Universitys superdatorer för forskningsändamål är många tredjepartspaket redan installerade för att komplettera vanligt använda Pythonpaket. Om du har ett unikt behov av ett Python-paket från tredje part som inte redan är installerat kan du använda pip eller setup.py för att installera paketet i din hemkatalog. Om du vet att flera forskare är intresserade av att använda ett Pythonpaket som inte redan är installerat, kan du begära att det installeras som ett systemövergripande webbplats-paket.

På den här sidan:

  • Installera Python-paket för personligt bruk
    • Inställ din användarmiljö
    • Installera ett paket med hjälp av pip
    • Installera ett paket med hjälp av dess setup.py script
  • Förstå sökordningen för moduler

Installera Pythonpaket för personligt bruk

Inställ din användarmiljö

För att installera Pythonpaket, måste Python läggas till i din användarmiljö. På Carbonate läggs Python till i din användarmiljö som standard. På Big Red 3, eller om du tidigare tagit bort Python, använder du följande instruktioner för att lägga till Python i din användarmiljö:

  1. Kontrollera vilka moduler som för närvarande är inlästa; på kommandoraden skriver du:
     module list
  2. Om Python inte finns med i listan över aktuella laddade moduler använder du kommandot module load för att lägga till den, till exempel: Om du vill lägga till standardversionen anger du följande på kommandoraden:
    • :
       module load python
    • För att lägga till en annan version än standardversionen:
      1. Kontrollera vilka versioner som finns tillgängliga:
         module avail python
      2. Lad in den föredragna versionen; på kommandoraden anger du (ersätt version_number med det föredragna versionsnumret):
         module avail python
      3. Lad in den föredragna versionen:
         module load python/version_number
  3. Om Python finns med bland de för närvarande inlästa modulerna, men du föredrar eller behöver använda en annan version, måste du ta bort den för närvarande inlästa modulen innan du laddar den andra versionen. Om du vill göra detta med ett kommando använder du module switch; på kommandoraden anger du till exempel (ersätt current_version med versionsnumret för den för närvarande inlästa modulen python och new_version med det föredragna versionsnumret):
     module switch python/current_version python/new_version

För att göra permanenta ändringar i din miljö redigerar du din~/.modules-fil. Mer information finns i Använd en .modules-fil i din hemkatalog för att spara din användarmiljö på en superdator för forskning vid IU.

För mer information om hur du använder Modules för att konfigurera din användarmiljö, se Använd Modules för att hantera din programvarumiljö på IU:s superdatorer för forskning.

Installera ett paket med hjälp av pip

Verktyget för pakethantering pip, ett av standardverktygen som underhålls av Python Package Authority (PyPA), är det rekommenderade verktyget för att installera paket från förrådet Python Package Index (PyPI).

För att installera ett paket från PyPI-förrådet (till exempel foo) använder du kommandot pip install med flaggan --user; till exempel:

Objektet --user styr pip att hämta och packa upp källkodsdistributionen för ditt paket (till exempel foo) i användarkatalogen site-packages för den körda Python; till exempel:

 ~/.local/lib/python3.6/site-packages/foo

Python söker automatiskt i den här katalogen efter moduler, så det är inte nödvändigt att lägga till den här sökvägen i miljövariabeln PYTHONPATH.

Om du utelämnar alternativet --user kommer pip att försöka installera ditt paket i den globala katalogen site-packages (där du inte har de nödvändiga behörigheterna); som ett resultat kommer installationen att misslyckas.

För mer information om hur du använder pip, se sidan pip install i pip-användarhandboken.

Installera ett paket med hjälp av dess setup.py-skriptet

För att installera ett Python-paket från en annan källa än PyPI-förrådet kan du hämta och packa upp källdistributionen själv och sedan använda dess setup.py-skript för att installera paketet i användarkatalogen site-packages:

Optionen --user styr setup.py att installera paketet (till exempel foo) i katalogen user site-packages för Python som körs, till exempel:

 ~/.local/lib/pythonX.Y/site-packages/foo

Python söker automatiskt i den här katalogen efter moduler, så det är inte nödvändigt att lägga till den här sökvägen i miljövariabeln PYTHONPATH.

Om du utelämnar alternativet --user kommer setup.py att försöka installera paketet i den globala katalogen site-packages (där du inte har de nödvändiga behörigheterna); som ett resultat kommer installationen att misslyckas.

Alternativt kan du använda alternativet --home eller --prefix för att installera paketet på en annan plats (där du har nödvändiga behörigheter); till exempel för att installera paketet i en underkatalog (till exempel python-pkgs):

Note:
Om du installerar paketet på en annan plats än i användarkatalogen site-packages måste du lägga till sökvägen till den katalogen i din miljövariabel PYTHONPATH. För mer information om PYTHONPATH, se PYTHONPATH och ordningen python import nedan.

För mer information om hur man använder setup.py för att installera paket, se Installing Python Modules (Legacy version).

Förstå sökordningen för moduler

Vetenskap om hur Python-tolken svarar på import-angivelser kan hjälpa dig att avgöra varför en viss modul eller ett visst paket inte laddas, eller varför en oväntad version av ett paket laddas, trots att den korrekta versionen är installerad och att sökvägen till dess plats finns angiven i din miljövariabel PYTHONPATH.

När Python startar söker den i de sökvägar som finns i sys.path, en lista över kataloger som bestämmer tolkarens sökväg för moduler. Variabeln sys.path initieras från följande platser, i denna ordning:

  1. Katalogen som innehåller det skript som används för att anropa Python-tolken (om tolken anropas interaktivt eller om skriptet läses från standardinmatningen förblir denna första post, path, en tom sträng, vilket styr Python att först söka efter moduler i den aktuella arbetskatalogen)
  2. Den katalog som finns listad i PYTHONPATH
  3. Den versionsspecifika site-packages-katalogen för den pågående Pythoninstallationen; t.ex:
     <sys.prefix>/lib/pythonX.Y/site-packages

    I det här exemplet är <sys.prefix> sökvägen till den pågående Python-installationen, X.Y är versionsnumret (till exempel 3.8) för den pågående Python-installationen.

Som standard importerar Python även modulen site.py vid initialisering, vilket lägger till platsspecifika sökvägar till modulsökvägen (sys.path), inklusive sökvägen till din användarkatalog site-packages i din hemkatalog; till exempel (X.Y kommer att vara versionsnumret för den pågående Pythoninstallationen):

 ~/.local/lib/pythonX.Y/site-packages

När site.py lägger till sökvägar till sys.path söker den efter sökvägskonfigurationsfiler (.pth), som innehåller ytterligare kataloger som läggs till sys.path. Om en katalog innehåller flera .pth-filer behandlar site.py dem i alfabetisk ordning.

Vissa .pth-filer innehåller dock inbäddade kommandon som infogar katalogposter i början av modulsökvägen (före standardbibliotekets sökväg). Detta leder till att en modul från en av de infogade katalogerna laddas i stället för modulen med samma namn från standardbibliotekskatalogen. Detta kan vara ett oönskat och förvirrande beteende om inte en sådan ersättning är avsedd.

Note:

Om dina import-förfrågningar konsekvent störs av site.py– och .pth-filer, prova att anropa Python-tolken med -S (stort ”S”):

 python -S

Detta inaktiverar den automatiska importen av site.py och förhindrar därmed att site.py manipulerar sys.path. Det hindrar dock också site.py från att lägga till din användarkatalog site-packages till sys.path. Om du vill importera site.py utan att lägga till din användarkatalog site-packages till sys.path, anropar du Python med alternativet -s (med ”s” i liten bokstav):

 python -s

För att se vilka kataloger som Python genomsöker när du ger import-kommandon, skriver du på kommandoraden:

 python -c "import sys; print ('\n'.join(sys.path))"

Alternativt kan du starta Python i interaktivt läge och sedan anropa samma kommandon i denna ordning (>>> är Pythons primära prompt):

 >>>import sys >>>print ('\n'.join(sys.path))
Notera:
Variabeln sys.path är bara en redigerbar lista med strängar som du kan redigera som vilken annan Python-lista som helst. Undvik att redigera det första objektet i listan (path), eftersom många paket antar att det hänvisar till katalogen som innehåller skriptet som används för att anropa Python-tolken.

Relaterade dokument

Lämna ett svar

Din e-postadress kommer inte publiceras.