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ö:
- Kontrollera vilka moduler som för närvarande är inlästa; på kommandoraden skriver du:
module list
- 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:
- Kontrollera vilka versioner som finns tillgängliga:
module avail python
- Lad in den föredragna versionen; på kommandoraden anger du (ersätt
version_number
med det föredragna versionsnumret):module avail python
- Lad in den föredragna versionen:
module load python/version_number
- Kontrollera vilka versioner som finns tillgängliga:
- :
- 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ättcurrent_version
med versionsnumret för den för närvarande inlästa modulenpython
ochnew_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
):
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:
- 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) - Den katalog som finns listad i PYTHONPATH
- 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 exempel3.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.
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))
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.