Python packages zijn verzamelingen van modules (herbruikbare code) die de functionaliteit van de kerntaal Python uitbreiden en verbeteren. Python ontwikkelaars dragen bij aan de officiële Python Package Index (PyPI) repository, waardoor hun pakketten beschikbaar zijn voor de Python gemeenschap onder open source licentievoorwaarden. De Python Packaging Authority (PyPA) beheert de repository, en onderhoudt een standaard set van tools voor het bouwen, distribueren en installeren van Python packages.

Op de onderzoeks-supercomputers van Indiana University zijn al veel third-party packages geïnstalleerd om veelgebruikte Python builds aan te vullen. Als u een unieke behoefte hebt aan een Python-pakket van een derde partij dat nog niet is geïnstalleerd, kunt u pip of setup.py gebruiken om het pakket in uw homedirectory te installeren. Als u weet dat meerdere onderzoekers geïnteresseerd zijn in het gebruik van een Python-pakket dat nog niet is geïnstalleerd, kunt u verzoeken om het als een systeembreed site-pakket te installeren.

Op deze pagina:

  • Python-pakketten installeren voor persoonlijk gebruik
    • Uw gebruikersomgeving instellen
    • Een pakket installeren met behulp van pip
    • Een pakket installeren met behulp van het setup.py script
  • De zoekvolgorde voor modules begrijpen

Python-pakketten installeren voor persoonlijk gebruik

Uw gebruikersomgeving instellen

Om Python-pakketten te installeren, moet u Python aan uw gebruikersomgeving hebben toegevoegd. Op Carbonate, is Python standaard toegevoegd aan uw gebruikersomgeving. Op Big Red 3, of als u Python eerder heeft verwijderd, gebruikt u de volgende instructies om Python aan uw gebruikersomgeving toe te voegen:

  1. Controleer welke modules momenteel geladen zijn; op de commandoregel, voer in:
     module list
  2. Als Python niet voorkomt in de lijst van momenteel geladen modules, gebruik dan het module load commando om het toe te voegen; bijvoorbeeld:
    • Om de standaardversie toe te voegen, voert u op de opdrachtregel in:
       module load python
    • Om een niet-standaard versie toe te voegen:
      1. Om te controleren welke versies beschikbaar zijn, voert u op de opdrachtregel in:
         module avail python
      2. Laad de voorkeursversie; op de opdrachtregel, voer in (vervang version_number door het voorkeursversienummer):
         module load python/version_number
  3. Als Python tussen de momenteel geladen modules staat, maar u wilt of moet een andere versie gebruiken, dan moet u de huidige geladen module verwijderen voordat u de andere versie laadt. Om dit met één commando te doen, gebruikt u module switch; voer bijvoorbeeld op de commandoregel in (vervang current_version door het versienummer van de momenteel geladen python module en new_version door het gewenste versienummer):
     module switch python/current_version python/new_version

Om permanente wijzigingen in uw omgeving aan te brengen, bewerkt u uw~/.modules-bestand. Zie Een .modules-bestand in uw homedirectory gebruiken om uw gebruikersomgeving op een IU-onderzoekssupercomputer op te slaan voor meer informatie.

Zie Modules gebruiken om uw gebruikersomgeving te configureren voor meer informatie over het gebruik van Modules om uw softwareomgeving op IU-onderzoekssupercomputers te beheren.

Installeer een pakket met pip

Het pip pakketbeheerprogramma, een van de standaardprogramma’s die worden onderhouden door de Python Package Authority (PyPA), is het aanbevolen programma voor het installeren van pakketten uit de Python Package Index (PyPI) repository.

Om een pakket uit de PyPI-repository te installeren (bijvoorbeeld foo), gebruikt u het pip install-commando met de --user-vlag; bijvoorbeeld:

De --user-optie stuurt pip om de brondistributie voor uw pakket (bijvoorbeeld foo) te downloaden en uit te pakken in de gebruikersdirectory site-packages voor de draaiende Python; bijvoorbeeld:

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

Python zoekt automatisch in deze directory naar modules, dus dit pad vooraf toevoegen aan de omgevingsvariabele PYTHONPATH is niet nodig.

Als u de optie --user weglaat, zal pip proberen uw pakket in de globale map site-packages te installeren (waar u niet de benodigde rechten hebt); als gevolg daarvan zal de installatie mislukken.

Voor meer over het gebruik van pip, zie de pip install pagina in de pip gebruikershandleiding.

Installeer een pakket met behulp van het setup.py script

Om een Python pakket te installeren van een andere bron dan de PyPI repository, kunt u de bron distributie zelf downloaden en uitpakken, en dan het setup.py script gebruiken om het pakket te installeren in de gebruikers site-packages directory:

De --user optie stuurt setup.py om het pakket (bijvoorbeeld foo) te installeren in de gebruiker site-packages directory voor de draaiende Python; bijvoorbeeld:

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

Python zoekt automatisch in deze directory naar modules, dus het vooraf toevoegen van dit pad aan de PYTHONPATH omgevingsvariabele is niet nodig.

Als u de optie --user weglaat, zal setup.py proberen het pakket in de globale site-packages directory te installeren (waar u niet de benodigde rechten heeft); als gevolg daarvan zal de installatie mislukken.

Als alternatief kunt u de --home of --prefix optie gebruiken om uw pakket op een andere locatie te installeren (waar u wel de benodigde rechten hebt); bijvoorbeeld om uw pakket in een subdirectory te installeren (bijvoorbeeld python-pkgs):

Note:
Als u uw package installeert op een andere locatie dan de gebruikersdirectory site-packages, moet u het pad naar die directory toevoegen aan uw omgevingsvariabele PYTHONPATH. Voor meer over PYTHONPATH, zie het PYTHONPATH en de python import volgorde hieronder.

Voor meer over het gebruik van setup.py om pakketten te installeren, zie Python modules installeren (Legacy versie).

De zoekvolgorde voor modules begrijpen

Weten hoe de Python interpreter reageert op import verklaringen kan u helpen bepalen waarom een bepaalde module of pakket niet wordt geladen, of waarom een onverwachte versie van een pakket wordt geladen, ook al is de juiste versie geïnstalleerd en staat het pad naar de locatie vermeld in uw PYTHONPATH omgevingsvariabele.

Wanneer Python opstart, doorzoekt het de paden gevonden in sys.path, een lijst van directories die het zoekpad van de interpreter voor modules bepaalt. De variabele sys.path wordt geïnitialiseerd vanuit de volgende locaties, in deze volgorde:

  1. De directory die het script bevat dat wordt gebruikt om de Python interpreter aan te roepen (als de interpreter interactief wordt aangeroepen of het script wordt gelezen van standaard input, blijft dit eerste item, path, een lege string, die Python instrueert om eerst modules te zoeken in de huidige werkdirectory)
  2. De directories die zijn vermeld in PYTHONPATH
  3. De versie-specifieke site-packages directory voor de draaiende Python installatie; bijvoorbeeld:
     <sys.prefix>/lib/pythonX.Y/site-packages

    In dit voorbeeld is <sys.prefix> het pad naar de draaiende Python installatie; X.Y is het versienummer (bijvoorbeeld 3.8) van de draaiende Python installatie.

Met standaardinstellingen importeert Python ook de site.py module bij initialisatie, die site-specifieke paden toevoegt aan het module zoekpad (sys.path), inclusief het pad naar uw gebruiker site-packages directory in uw home directory; bijvoorbeeld (X.Y zal het versienummer zijn van de lopende Python installatie):

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

Als site.py paden toevoegt aan sys.path, scant het deze op padconfiguratie (.pth) bestanden, die extra mappen bevatten die worden toegevoegd aan sys.path. Als een directory meerdere .pth bestanden bevat, verwerkt site.py ze in alfabetische volgorde.

Echter, sommige .pth bestanden bevatten ingesloten commando’s die directory ingangen invoegen aan het begin van het module zoekpad (voor het standaard bibliotheek pad). Als gevolg daarvan zal een module uit een van de ingevoegde directories worden geladen in plaats van de module met dezelfde naam uit de standaard bibliotheek directory. Dit kan ongewenst en verwarrend gedrag zijn, tenzij een dergelijke vervanging is bedoeld.

Note:

Als uw import verzoeken consequent worden verstoord door site.py en .pth bestanden, probeer dan de Python interpreter aan te roepen met de -S (hoofdletter “S”):

 python -S

Dit schakelt de automatische import van site.py uit en voorkomt als gevolg daarvan dat het sys.path manipuleert. Het voorkomt echter ook dat site.py uw gebruikersdirectory site-packages toevoegt aan sys.path. Om site.py te importeren zonder uw gebruiker site-packages directory toe te voegen aan sys.path, roept u Python aan met de -s (kleine letter “s”) optie:

 python -s

Om te zien welke directories Python scant wanneer u import commando’s uitvoert, voert u op de commandoregel in:

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

Als alternatief, start Python in interactieve modus, en roep dan dezelfde commando’s aan in deze volgorde (>>> is de Python primaire prompt):

 >>>import sys >>>print ('\n'.join(sys.path))
Note:
De sys.path variabele is slechts een bewerkbare lijst van strings die u kunt bewerken zoals elke andere Python lijst. Vermijd het bewerken van het eerste item in de lijst (path), omdat veel pakketten aannemen dat het verwijst naar de directory met het script dat wordt gebruikt om de Python interpreter aan te roepen.

Gerelateerde documenten

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.