sysconfig
— Ger tillgång till Pythons konfigurationsinformation¶
Tillagd i version 3.2.
Källkod: Lib/sysconfig
Modulen sysconfig
ger tillgång till Pythons konfigurationsinformation, t.ex. listan över installationssökvägar och de konfigurationsvariabler som är relevanta för den aktuella plattformen.
Variabler för konfiguration¶
En Python-distribution innehåller en Makefile
och en pyconfig.h
header-fil som är nödvändiga för att bygga både Python-binären själv och C-tillägg från tredje part som kompileras med setuptools
.
sysconfig
placerar alla variabler som finns i dessa filer i en ordbok som kan nås med get_config_vars()
eller get_config_var()
.
Observera att på Windows är det en mycket mindre uppsättning.
- sysconfig.get_config_vars(*args)¶
Returnerar utan argument en ordbok med alla konfigurationsvariabler som är relevanta för den aktuella plattformen.
Med argument returneras en lista med värden som blir resultatet av en sökning efter varje argument i konfigurationsvariabelns ordbok.
För varje argument, om värdet inte hittas, returneras
None
.
- sysconfig.get_config_var(name)¶
Returnerar värdet för en enskild variabel namn. Motsvarar
get_config_vars().get(name)
.Om namn inte hittas returneras
None
.
Exempel på användning:
>>> import sysconfig
>>> sysconfig.get_config_var('Py_ENABLE_SHARED')
0
>>> sysconfig.get_config_var('LIBDIR')
'/usr/local/lib'
>>> sysconfig.get_config_vars('AR', 'CXX')
['ar', 'g++']
Installationsvägar¶
Python använder ett installationsschema som skiljer sig åt beroende på plattform och installationsalternativ. Dessa scheman lagras i sysconfig
under unika identifierare baserade på det värde som returneras av os.name
. Schemana används av paketinstallatörer för att avgöra var filer ska kopieras till.
Python stöder för närvarande nio system:
posix_prefix: schema för POSIX-plattformar som Linux eller macOS. Detta är standardschemat som används när Python eller en komponent installeras.
posix_home: schema för POSIX-plattformar, när alternativet home används. Detta schema definierar sökvägar som ligger under ett specifikt home-prefix.
posix_user: schema för POSIX-plattformar, när alternativet user används. Det här schemat definierar sökvägar som ligger under användarens hemkatalog (
site.USER_BASE
).posix_venv: schema för
Python virtual environments
på POSIX-plattformar; som standard är det samma som posix_prefix.nt: schema för Windows. Detta är standardschemat som används när Python eller en komponent installeras.
nt_user: schema för Windows, när alternativet user används.
nt_venv: schema för
Python virtuella miljöer
på Windows; som standard är det samma som nt.venv: ett schema med värden från antingen posix_venv eller nt_venv beroende på vilken plattform Python körs på.
osx_framework_user: schema för macOS, när alternativet user används.
Varje schema består i sin tur av en serie sökvägar och varje sökväg har en unik identifierare. Python använder för närvarande åtta sökvägar:
stdlib: katalog som innehåller Pythons standardbiblioteksfiler som inte är plattformsspecifika.
platstdlib: katalog som innehåller Pythons standardbiblioteksfiler som är plattformsspecifika.
platlib: katalog för platsspecifika, plattformsspecifika filer.
purelib: katalog för platsspecifika, icke-plattformsspecifika filer (’ren’ Python).
include: katalog för icke plattformsspecifika header-filer för Python C-API.
platinclude: katalog för plattformsspecifika huvudfiler för Python C-API.
scripts: katalog för skriptfiler.
data: katalog för datafiler.
Användarschema¶
Detta system är utformat för att vara den mest praktiska lösningen för användare som inte har skrivbehörighet till den globala katalogen site-packages eller som inte vill installera i den.
Filer kommer att installeras i underkataloger till site.USER_BASE
(skrivs som userbase
hädanefter). Detta schema installerar rena Python-moduler och tilläggsmoduler på samma plats (även känd som site.USER_SITE
).
posix_user
¶
Sökväg |
Installationskatalog |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
nt_user
¶
Sökväg |
Installationskatalog |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
osx_framework_user
¶
Sökväg |
Installationskatalog |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
Hemschema¶
Tanken bakom ”hemschemat” är att du bygger och underhåller en personlig samling Python-moduler. Namnet på detta schema härrör från idén om en ”hem”-katalog på Unix, eftersom det inte är ovanligt att en Unix-användare gör sin hemkatalog med en layout som liknar /usr/
eller /usr/local/
. Det här schemat kan användas av vem som helst, oavsett vilket operativsystem man installerar för.
posix_home
¶
Sökväg |
Installationskatalog |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
Prefixschema¶
”Prefixschemat” är användbart när du vill använda en Python-installation för att utföra byggandet/installationen (dvs. för att köra installationsskriptet), men installera moduler i tredjeparts modulkatalogen i en annan Python-installation (eller något som ser ut som en annan Python-installation). Om det här låter lite ovanligt så är det så - det är därför user- och home-schemana kommer före. Det finns dock åtminstone två kända fall där prefixschemat kommer att vara användbart.
Tänk först på att många Linux-distributioner placerar Python i /usr
, snarare än i den mer traditionella /usr/local
. Detta är helt i sin ordning, eftersom Python i dessa fall är en del av ”systemet” snarare än ett lokalt tillägg. Men om du installerar Python-moduler från källkod vill du förmodligen att de ska hamna i /usr/local/lib/python2.X
snarare än /usr/lib/python2.X
.
En annan möjlighet är ett nätverksfilsystem där det namn som används för att skriva till en fjärrkatalog skiljer sig från det namn som används för att läsa den: till exempel kan Python-tolken som nås som /usr/local/bin/python
söka efter moduler i /usr/local/lib/python2.X
, men dessa moduler måste installeras i till exempel /mnt/@server/export/lib/python2.X
.
posix_prefix
¶
Sökväg |
Installationskatalog |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
nt
¶
Sökväg |
Installationskatalog |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
Funktioner för installationssökväg¶
sysconfig
tillhandahåller vissa funktioner för att bestämma dessa installationssökvägar.
- sysconfig.get_scheme_names()¶
Returnerar en tupel som innehåller alla scheman som för närvarande stöds i
sysconfig
.
- sysconfig.get_default_scheme()¶
Returnerar standardschemanamnet för den aktuella plattformen.
Tillagd i version 3.10: Denna funktion hette tidigare
_get_default_scheme()
och betraktades som en implementeringsdetalj.Ändrad i version 3.11: När Python körs från en virtuell miljö returneras schemat venv.
- sysconfig.get_preferred_scheme(key)¶
Returnerar ett föredraget systemnamn för en installationslayout som anges av key.
key måste vara antingen
"prefix"
,"home"
eller"user"
.Returvärdet är ett schemanamn som listas i
get_scheme_names()
. Det kan skickas tillsysconfig
-funktioner som tar ett scheme-argument, t.ex.get_paths()
.Tillagd i version 3.10.
Ändrad i version 3.11: När Python körs från en virtuell miljö och
key="prefix"
, returneras venv-schemat.
- sysconfig._get_preferred_schemes()¶
Returnerar en dict som innehåller namn på föredragna system på den aktuella plattformen. Python-implementerare och redistributörer kan lägga till sina föredragna scheman till det globala värdet
_INSTALL_SCHEMES
på modulnivå och modifiera denna funktion för att returnera dessa schemanamn, för att t.ex. tillhandahålla olika scheman för system- och språkpakethanterare att använda, så att paket som installeras av endera inte blandas med dem av den andra.Slutanvändare bör inte använda denna funktion, utan istället
get_default_scheme()
ochget_preferred_scheme()
.Tillagd i version 3.10.
- sysconfig.get_path_names()¶
Returnerar en tupel som innehåller alla sökvägsnamn som för närvarande stöds i
sysconfig
.
- sysconfig.get_path(name[, scheme[, vars[, expand]]])¶
Returnerar en installationssökväg som motsvarar sökvägen name, från installationsschemat med namnet scheme.
name måste vara ett värde från den lista som returneras av
get_path_names()
.sysconfig
lagrar installationssökvägar som motsvarar varje sökvägsnamn, för varje plattform, med variabler som kan utökas. Till exempel är stdlib-sökvägen för nt-schemat:{base}/Lib
.get_path()
kommer att använda de variabler som returneras avget_config_vars()
för att expandera sökvägen. Alla variabler har standardvärden för varje plattform, så man kan anropa den här funktionen och få standardvärdet.Om scheme anges måste det vara ett värde från listan som returneras av
get_scheme_names()
. Annars används standardschemat för den aktuella plattformen.Om vars anges måste det vara en ordlista med variabler som uppdaterar den ordlista som returneras av
get_config_vars()
.Om expand är satt till
False
kommer sökvägen inte att expanderas med hjälp av variablerna.Om namn inte hittas, utlöses ett
KeyError
.
- sysconfig.get_paths([scheme[, vars[, expand]]])¶
Returnerar en ordbok som innehåller alla installationssökvägar som motsvarar ett installationsschema. Se
get_path()
för mer information.Om scheme inte anges används standardschemat för den aktuella plattformen.
Om vars anges måste det vara en ordlista med variabler som uppdaterar den ordlista som används för att expandera sökvägarna.
Om expand är satt till false kommer sökvägarna inte att expanderas.
Om scheme inte är ett befintligt schema kommer
get_paths()
att ge upphov till ettKeyError
.
Övriga funktioner¶
- sysconfig.get_python_version()¶
Returnerar Pythons
MAJOR.MINOR
versionsnummer som en sträng. Liknar'%d.%d' % sys.version_info[:2]
.
- sysconfig.get_platform()¶
Returnerar en sträng som identifierar den aktuella plattformen.
Detta används främst för att skilja mellan plattformsspecifika byggkataloger och plattformsspecifikt byggda distributioner. Innehåller vanligtvis operativsystemets namn och version samt arkitektur (enligt
os.uname()
), men exakt vilken information som ingår beror på operativsystemet; t.ex. är kärnversionen inte särskilt viktig för Linux.Exempel på returnerade värden:
linux-i586
linux-alpha (?)
solaris-2.6-sun4u
Windows kommer att returnera en av:
win-amd64 (64-bitars Windows på AMD64, även känt som x86_64, Intel64 och EM64T)
win-arm64 (64-bitars Windows på ARM64, även kallat AArch64)
win32 (alla andra - specifikt returneras sys.platform)
macOS kan återvända:
macosx-10.6-ppc
macosx-10.4-ppc64
macosx-10.3-i386
macosx-10.4-fat
För andra icke-POSIX-plattformar returneras för närvarande bara
sys.platform
.
- sysconfig.is_python_build()¶
Returnerar
True
om den Python-tolk som körs byggdes från källan och körs från dess byggda plats, och inte från en plats som härrör från t.ex. körning avmake install
eller installation via ett binärt installationsprogram.
- sysconfig.parse_config_h(fp[, vars])¶
Analysera en fil i stil med
config.h
.fp är ett filliknande objekt som pekar på den
config.h
-liknande filen.En ordbok som innehåller namn/värde-par returneras. Om en valfri ordbok skickas in som andra argument används den i stället för en ny ordbok och uppdateras med de värden som läses in i filen.
- sysconfig.get_config_h_filename()¶
Returnera sökvägen till
pyconfig.h
.
- sysconfig.get_makefile_filename()¶
Returnerar sökvägen till
Makefile
.
Användning av kommandoraden¶
Du kan använda sysconfig
som ett skript med Pythons -m-alternativ:
$ python -m sysconfig
Platform: "macosx-10.4-i386"
Python version: "3.2"
Current installation scheme: "posix_prefix"
Paths:
data = "/usr/local"
include = "/Users/tarek/Dev/svn.python.org/py3k/Include"
platinclude = "."
platlib = "/usr/local/lib/python3.2/site-packages"
platstdlib = "/usr/local/lib/python3.2"
purelib = "/usr/local/lib/python3.2/site-packages"
scripts = "/usr/local/bin"
stdlib = "/usr/local/lib/python3.2"
Variables:
AC_APPLE_UNIVERSAL_BUILD = "0"
AIX_GENUINE_CPLUSPLUS = "0"
AR = "ar"
ARFLAGS = "rc"
...
Detta anrop kommer att skriva ut i standardutdata den information som returneras av get_platform()
, get_python_version()
, get_path()
och get_config_vars()
.