Initialisering av sökvägen för modulen sys.path
¶
En sökväg för moduler initialiseras när Python startar. Denna sökväg för moduler kan nås via sys.path
.
Den första posten i sökvägen för modulen är den katalog som innehåller indataskriptet, om det finns ett sådant. Annars är den första posten den aktuella katalogen, vilket är fallet när du kör det interaktiva skalet, ett -c
-kommando eller en -m
-modul.
Miljövariabeln PYTHONPATH
används ofta för att lägga till kataloger i sökvägen. Om den här miljövariabeln hittas läggs innehållet till i modulens sökväg.
Anteckning
PYTHONPATH
kommer att påverka alla installerade Python-versioner/miljöer. Var försiktig med att ställa in detta i din skalprofil eller globala miljövariabler. Modulen site
erbjuder mer nyanserade tekniker som nämns nedan.
Nästa objekt som läggs till är katalogerna som innehåller standardmoduler för Python samt alla extension modules som dessa moduler är beroende av. Tilläggsmoduler är .pyd
-filer i Windows och .so
-filer på andra plattformar. Katalogen med plattformsoberoende Python-moduler kallas prefix
. Katalogen med tilläggsmoduler kallas exec_prefix
.
Miljövariabeln PYTHONHOME
kan användas för att ange platserna prefix
och exec_prefix
. Annars hittas dessa kataloger genom att använda den körbara Python-filen som utgångspunkt och sedan leta efter olika ”landmärkes”-filer och -kataloger. Observera att alla symboliska länkar följs så att den verkliga platsen för den körbara Python-filen används som startpunkt för sökningen. Platsen för Pythons körbara fil kallas home
.
När home
har bestämts hittas katalogen prefix
genom att först söka efter pythonmajorversionminorversion.zip
(python311.zip
). I Windows söks zip-arkivet i home
och i Unix förväntas arkivet finnas i lib
. Observera att den förväntade platsen för zip-arkivet läggs till i modulsökvägen även om arkivet inte finns. Om inget arkiv hittas fortsätter Python i Windows sökningen efter prefix
genom att söka efter Lib\os.py
. Python på Unix letar efter lib/pythonmajorversion.minorversion/os.py
(lib/python3.11/os.py
). I Windows är prefix
och exec_prefix
samma, men på andra plattformar söks lib/pythonmajorversion.minorversion/lib-dynload
(lib/python3.11/lib-dynload
) och används som ankare för exec_prefix
. På vissa plattformar kan lib
vara lib64
eller ett annat värde, se sys.platlibdir
och PYTHONPLATLIBDIR
.
När de har hittats finns prefix
och exec_prefix
tillgängliga på sys.base_prefix
respektive sys.base_exec_prefix
.
Om PYTHONHOME
inte är inställt och en fil med namnet pyvenv.cfg
hittas bredvid den körbara huvudfilen eller i dess överordnade katalog, sätts sys.prefix
och sys.exec_prefix
till den katalog som innehåller pyvenv.cfg
, annars sätts de till samma värde som sys.base_prefix
respektive sys.base_exec_prefix
. Detta används av Virtuella miljöer.
Slutligen bearbetas modulen site
och katalogerna site-packages
läggs till i modulens söksökväg. Ett vanligt sätt att anpassa sökvägen är att skapa modulerna sitecustomize
eller usercustomize
enligt beskrivningen i dokumentationen för modulen site
.
Anteckning
Vissa kommandoradsalternativ kan påverka sökvägsberäkningarna ytterligare. Se -E
, -I
, -s
och -S
för mer information.
Ändrad i version 3.14: sys.prefix
och sys.exec_prefix
sätts nu till katalogen pyvenv.cfg
under initieringen av sökvägen. Detta gjordes tidigare av site
, och påverkas därför av -S
.
Virtuella miljöer¶
Virtuella miljöer placerar filen pyvenv.cfg
i sitt prefix, vilket gör att sys.prefix
och sys.exec_prefix
pekar på dem i stället för på basinstallationen.
Värdena prefix
och exec_prefix
för basinstallationen finns tillgängliga i sys.base_prefix
och sys.base_exec_prefix
.
Förutom att användas som en markör för att identifiera virtuella miljöer kan pyvenv.cfg
också användas för att konfigurera initieringen av site
. Se site
:s dokumentation om virtuella miljöer.
Anteckning
PYTHONHOME
åsidosätter identifieringen i pyvenv.cfg
.
Anteckning
Det finns andra sätt att implementera ”virtuella miljöer”, den här dokumentationen hänvisar till implementationer baserade på mekanismen pyvenv.cfg
, såsom venv
. De flesta implementeringar av virtuella miljöer följer den modell som anges av venv
, men det kan finnas exotiska implementeringar som avviker från den.
_pth-filer¶
För att helt åsidosätta sys.path
skapa en fil med namnet ._pth
med samma namn som den delade biblioteket eller den körbara filen (python._pth
eller python311._pth
). Den delade bibliotekets sökväg är alltid känd i Windows, men den kanske inte är tillgänglig på andra plattformar. I filen ._pth
anger du en rad för varje sökväg som ska läggas till sys.path
. Filen baserad på det delade bibliotekets namn åsidosätter den som baseras på den körbara filen, vilket gör att sökvägar kan begränsas för alla program som laddar runtime om så önskas.
När filen finns ignoreras alla register- och miljövariabler, isolerat läge aktiveras och site
importeras inte om inte en rad i filen anger import site
. Tomma sökvägar och rader som börjar med #
ignoreras. Varje sökväg kan vara absolut eller relativ till filens plats. Andra importmeddelanden än till site
är inte tillåtna, och godtycklig kod kan inte anges.
Observera att filer med namnet .pth
(utan understreck i början) behandlas normalt av modulen site
när import site
har angetts.
Inbäddad Python¶
Om Python är inbäddat i en annan applikation kan Py_InitializeFromConfig()
och PyConfig
-strukturen användas för att initiera Python. De sökvägsspecifika detaljerna beskrivs i Konfiguration av Python-sökväg.
Se även
Hitta moduler för detaljerade Windows-kommentarer.
Använda Python på Unix-plattformar för detaljer om Unix.