sysconfig — Zugriff auf Pythons Konfigurationsinformationen¶
Hinzugefügt in Version 3.2.
Quellcode: Lib/sysconfig
Das Modul sysconfig bietet Zugriff auf Pythons Konfigurationsinformationen wie die Liste der Installationspfade und die Konfigurationsvariablen, die für die aktuelle Plattform relevant sind.
Konfigurationsvariablen¶
Eine Python-Distribution enthält eine Makefile und eine Header-Datei pyconfig.h, die für die Erstellung sowohl der Python-Binärdatei selbst als auch von C-Erweiterungen von Drittanbietern, die mit setuptools kompiliert werden, erforderlich sind.
sysconfig fasst alle in diesen Dateien gefundenen Variablen in einem Wörterbuch zusammen, auf das mit get_config_vars() oder get_config_var() zugegriffen werden kann.
Beachten Sie, dass unter Windows eine viel kleinere Menge verfügbar ist.
- sysconfig.get_config_vars(**args)¶
Ohne Argumente wird ein Wörterbuch aller Konfigurationsvariablen zurückgegeben, die für die aktuelle Plattform relevant sind.
Mit Argumenten wird eine Liste von Werten zurückgegeben, die sich aus der Suche nach jedem Argument im Wörterbuch der Konfigurationsvariablen ergeben.
Wenn der Wert für ein Argument nicht gefunden wird, wird
Nonezurückgegeben.
- sysconfig.get_config_var(name)¶
Gibt den Wert einer einzelnen Variablen mit dem Namen name zurück. Entspricht
get_config_vars().get(name).Wenn name nicht gefunden wird, wird
Nonezurückgegeben.
Beispielverwendung
>>> 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++']
Installationspfade¶
Python verwendet ein Installationsschema, das je nach Plattform und Installationsoptionen variiert. Diese Schemata werden in sysconfig unter eindeutigen Bezeichnern gespeichert, die auf dem von os.name zurückgegebenen Wert basieren. Die Schemata werden von Paketinstallationsprogrammen verwendet, um zu bestimmen, wohin Dateien kopiert werden sollen.
Python unterstützt derzeit neun Schemata
posix_prefix: Schema für POSIX-Plattformen wie Linux oder macOS. Dies ist das Standardschema, das verwendet wird, wenn Python oder eine Komponente installiert wird.
posix_home: Schema für POSIX-Plattformen, wenn die Option home verwendet wird. Dieses Schema definiert Pfade, die sich unter einem bestimmten Home-Präfix befinden.
posix_user: Schema für POSIX-Plattformen, wenn die Option user verwendet wird. Dieses Schema definiert Pfade, die sich unter dem Home-Verzeichnis des Benutzers befinden (
site.USER_BASE).posix_venv: Schema für
Python virtuelle Umgebungenauf POSIX-Plattformen; standardmäßig ist es dasselbe wie posix_prefix.nt: Schema für Windows. Dies ist das Standardschema, das verwendet wird, wenn Python oder eine Komponente installiert wird.
nt_user: Schema für Windows, wenn die Option user verwendet wird.
nt_venv: Schema für
Python virtuelle Umgebungenunter Windows; standardmäßig ist es dasselbe wie nt.venv: Ein Schema mit Werten entweder aus posix_venv oder nt_venv, abhängig von der Plattform, auf der Python ausgeführt wird.
osx_framework_user: Schema für macOS, wenn die Option user verwendet wird.
Jedes Schema besteht selbst aus einer Reihe von Pfaden, und jeder Pfad hat einen eindeutigen Bezeichner. Python verwendet derzeit acht Pfade
stdlib: Verzeichnis, das die Standardbibliotheksdateien von Python enthält, die nicht plattformspezifisch sind.
platstdlib: Verzeichnis, das die Standardbibliotheksdateien von Python enthält, die plattformspezifisch sind.
platlib: Verzeichnis für standortspezifische, plattformspezifische Dateien.
purelib: Verzeichnis für standortspezifische, nicht plattformspezifische Dateien (reines Python).
include: Verzeichnis für nicht plattformspezifische Header-Dateien für die Python C-API.
platinclude: Verzeichnis für plattformspezifische Header-Dateien für die Python C-API.
scripts: Verzeichnis für Skriptdateien.
data: Verzeichnis für Datendateien.
Benutzerschema¶
Dieses Schema ist als die bequemste Lösung für Benutzer gedacht, die keine Schreibberechtigung für das globale Verzeichnis site-packages haben oder nicht darin installieren möchten.
Dateien werden in Unterverzeichnissen von site.USER_BASE installiert (im Folgenden als userbase bezeichnet). Dieses Schema installiert reine Python-Module und Erweiterungsmodule am selben Ort (auch bekannt als site.USER_SITE).
posix_user¶
Pfad |
Installationsverzeichnis |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
Daten |
|
nt_user¶
Pfad |
Installationsverzeichnis |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
Daten |
|
osx_framework_user¶
Pfad |
Installationsverzeichnis |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
Daten |
|
Homeschema¶
Die Idee hinter dem „Homeschema“ ist, dass Sie eine persönliche Sammlung von Python-Modulen erstellen und pflegen. Der Name dieses Schemas leitet sich von der Idee eines „Home“-Verzeichnisses unter Unix ab, da es für einen Unix-Benutzer nicht ungewöhnlich ist, dass sein Home-Verzeichnis ein Layout ähnlich wie /usr/ oder /usr/local/ aufweist. Dieses Schema kann von jedem verwendet werden, unabhängig vom Betriebssystem, für das installiert wird.
posix_home¶
Pfad |
Installationsverzeichnis |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
Daten |
|
Präfixschema¶
Das „Präfixschema“ ist nützlich, wenn Sie eine Python-Installation verwenden möchten, um den Build/die Installation durchzuführen (d. h. das Setup-Skript auszuführen), aber Module in das Verzeichnis für Module von Drittanbietern einer anderen Python-Installation installieren möchten (oder etwas, das einer anderen Python-Installation ähnelt). Wenn dies etwas ungewöhnlich klingt, ist es das auch – deshalb kommen das Benutzer- und das Homeschema zuerst. Es gibt jedoch mindestens zwei bekannte Fälle, in denen das Präfixschema nützlich ist.
Betrachten Sie zuerst, dass viele Linux-Distributionen Python in /usr und nicht im traditionelleren /usr/local platzieren. Dies ist durchaus angemessen, da Python in diesen Fällen Teil des „Systems“ und nicht ein lokales Add-on ist. Wenn Sie jedoch Python-Module aus dem Quellcode installieren, möchten Sie wahrscheinlich, dass sie in /usr/local/lib/python2.X statt in /usr/lib/python2.X landen.
Eine weitere Möglichkeit ist ein Netzwerkdateisystem, bei dem der Name, der zum Schreiben in ein Remote-Verzeichnis verwendet wird, sich vom Namen unterscheidet, der zum Lesen verwendet wird: Zum Beispiel sucht der Python-Interpreter, der als /usr/local/bin/python angesprochen wird, möglicherweise nach Modulen in /usr/local/lib/python2.X, aber diese Module müssten beispielsweise nach /mnt/@server/export/lib/python2.X installiert werden.
posix_prefix¶
Pfad |
Installationsverzeichnis |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
Daten |
|
nt¶
Pfad |
Installationsverzeichnis |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
Daten |
|
Installationspfadfunktionen¶
sysconfig bietet einige Funktionen, um diese Installationspfade zu ermitteln.
- sysconfig.get_scheme_names()¶
Gibt ein Tupel zurück, das alle derzeit in
sysconfigunterstützten Schemata enthält.
- sysconfig.get_default_scheme()¶
Gibt den Namen des Standardschemas für die aktuelle Plattform zurück.
Hinzugefügt in Version 3.10: Diese Funktion hieß zuvor
_get_default_scheme()und galt als Implementierungsdetail.Geändert in Version 3.11: Wenn Python aus einer virtuellen Umgebung ausgeführt wird, wird das Schema venv zurückgegeben.
- sysconfig.get_preferred_scheme(key)¶
Gibt einen bevorzugten Schemanamen für ein Installationslayout zurück, das durch key angegeben wird.
key muss entweder
"prefix","home"oder"user"sein.Der Rückgabewert ist ein Schemaname, der in
get_scheme_names()aufgeführt ist. Er kann ansysconfig-Funktionen übergeben werden, die ein scheme-Argument entgegennehmen, wie z. B.get_paths().Hinzugefügt in Version 3.10.
Geändert in Version 3.11: Wenn Python aus einer virtuellen Umgebung ausgeführt wird und
key="prefix"ist, wird das Schema venv zurückgegeben.
- sysconfig._get_preferred_schemes()¶
Gibt ein Wörterbuch mit bevorzugten Schemanamen auf der aktuellen Plattform zurück. Python-Implementierer und -Weiterverteiler können ihre bevorzugten Schemata zum globalen Wert auf Modulebene
_INSTALL_SCHEMEShinzufügen und diese Funktion ändern, um diese Schemanamen zurückzugeben, um z. B. unterschiedliche Schemata für System- und Sprachpaketmanager bereitzustellen, damit Pakete, die von einem der beiden installiert wurden, nicht mit denen des anderen vermischt werden.Endbenutzer sollten diese Funktion nicht verwenden, sondern stattdessen
get_default_scheme()undget_preferred_scheme().Hinzugefügt in Version 3.10.
- sysconfig.get_path_names()¶
Gibt ein Tupel zurück, das alle Pfadnamen enthält, die derzeit in
sysconfigunterstützt werden.
- sysconfig.get_path(name[, scheme[, vars[, expand]]])¶
Gibt einen Installationspfad zurück, der dem Pfad mit dem Namen name aus dem Installationsschema mit dem Namen scheme entspricht.
name muss ein Wert aus der Liste sein, die von
get_path_names()zurückgegeben wird.sysconfigspeichert Installationspfade, die jedem Pfadnamen für jede Plattform entsprechen, mit Variablen, die erweitert werden sollen. Zum Beispiel ist der Pfad stdlib für das Schema nt:{base}/Lib.get_path()verwendet die vonget_config_vars()zurückgegebenen Variablen, um den Pfad zu erweitern. Alle Variablen haben Standardwerte für jede Plattform, sodass man diese Funktion aufrufen und den Standardwert erhalten kann.Wenn scheme angegeben wird, muss es ein Wert aus der Liste sein, die von
get_scheme_names()zurückgegeben wird. Andernfalls wird das Standardschema für die aktuelle Plattform verwendet.Wenn vars angegeben wird, muss es ein Wörterbuch von Variablen sein, das das von
get_config_vars()zurückgegebene Wörterbuch aktualisiert.Wenn expand auf
Falsegesetzt ist, wird der Pfad nicht mit den Variablen erweitert.Wenn name nicht gefunden wird, wird ein
KeyErrorausgelöst.
- sysconfig.get_paths([scheme[, vars[, expand]]])¶
Gibt ein Wörterbuch zurück, das alle Installationspfade enthält, die einem Installationsschema entsprechen. Weitere Informationen finden Sie unter
get_path().Wenn scheme nicht angegeben wird, wird das Standardschema für die aktuelle Plattform verwendet.
Wenn vars angegeben wird, muss es ein Wörterbuch von Variablen sein, das das für die Erweiterung der Pfade verwendete Wörterbuch aktualisiert.
Wenn expand auf false gesetzt ist, werden die Pfade nicht erweitert.
Wenn scheme kein vorhandenes Schema ist, löst
get_paths()einenKeyErroraus.
Andere Funktionen¶
- sysconfig.get_python_version()¶
Gibt die Python-Versionsnummer im Format
MAJOR.MINORals Zeichenkette zurück. Ähnlich wie'%d.%d' % sys.version_info[:2].
- sysconfig.get_platform()¶
Gibt eine Zeichenkette zurück, die die aktuelle Plattform identifiziert.
Dies wird hauptsächlich verwendet, um plattformspezifische Build-Verzeichnisse und plattformspezifische erstellte Distributionen zu unterscheiden. Typischerweise enthält es den Betriebssystemnamen und die Version sowie die Architektur (wie von
os.uname()bereitgestellt), obwohl die genauen Informationen je nach Betriebssystem variieren; z. B. ist unter Linux die Kernelversion nicht besonders wichtig.Beispiele für zurückgegebene Werte
Windows
win-amd64 (64-Bit-Windows auf AMD64, auch bekannt als x86_64, Intel64 und EM64T)
win-arm64 (64-Bit-Windows auf ARM64, auch bekannt als AArch64)
win32 (alle anderen – genauer gesagt wird sys.platform zurückgegeben)
POSIX-basierte Betriebssysteme
linux-x86_64
macosx-15.5-arm64
macosx-26.0-universal2 (macOS auf Apple Silicon oder Intel)
android-24-arm64_v8a
Für andere nicht-POSIX-Plattformen wird derzeit nur
sys.platformzurückgegeben.
- sysconfig.is_python_build()¶
Gibt
Truezurück, wenn der laufende Python-Interpreter aus dem Quellcode erstellt wurde und von seinem Build-Speicherort aus ausgeführt wird und nicht von einem Speicherort, der sich aus z. B. der Ausführung vonmake installoder der Installation über ein Binärinstallationsprogramm ergibt.
- sysconfig.parse_config_h(fp[, vars])¶
Analysiert eine Datei im Stil von
config.h.fp ist ein dateiähnliches Objekt, das auf die
config.h-ähnliche Datei verweist.Ein Wörterbuch, das Namen/Wert-Paare enthält, wird zurückgegeben. Wenn ein optionales Wörterbuch als zweites Argument übergeben wird, wird es anstelle eines neuen Wörterbuchs verwendet und mit den im Datei gelesenen Werten aktualisiert.
- sysconfig.get_config_h_filename()¶
Gibt den Pfad von
pyconfig.hzurück.
- sysconfig.get_makefile_filename()¶
Gibt den Pfad von
Makefilezurück.
Verwendung über die Kommandozeile¶
Sie können sysconfig mit Pythons -m Option als Skript verwenden
$ 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"
...
Dieser Aufruf gibt die von get_platform(), get_python_version(), get_path() und get_config_vars() zurückgegebenen Informationen in der Standardausgabe aus.