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