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:
- Controleer welke modules momenteel geladen zijn; op de commandoregel, voer in:
module list
- 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:
- Om te controleren welke versies beschikbaar zijn, voert u op de opdrachtregel in:
module avail python
- Laad de voorkeursversie; op de opdrachtregel, voer in (vervang
version_number
door het voorkeursversienummer):module load python/version_number
- Om te controleren welke versies beschikbaar zijn, voert u op de opdrachtregel in:
- Om de standaardversie toe te voegen, voert u op de opdrachtregel in:
- 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 (vervangcurrent_version
door het versienummer van de momenteel geladenpython
module ennew_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
):
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:
- 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) - De directories die zijn vermeld in PYTHONPATH
- 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 (bijvoorbeeld3.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.
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))
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.