Python-Initialisierungskonfiguration¶
PyInitConfig C API¶
Hinzugefügt in Version 3.14.
Python kann mit Py_InitializeFromInitConfig() initialisiert werden.
Die Funktion Py_RunMain() kann verwendet werden, um ein benutzerdefiniertes Python-Programm zu schreiben.
Siehe auch Initialisierung, Finalisierung und Threads.
Siehe auch
PEP 741 „Python Configuration C API“.
Beispiel¶
Beispiel für eine benutzerdefinierte Python-Umgebung, die immer mit aktiviertem Python-Entwicklermodus ausgeführt wird; Rückgabe von -1 bei Fehler
int init_python(void)
{
PyInitConfig *config = PyInitConfig_Create();
if (config == NULL) {
printf("PYTHON INIT ERROR: memory allocation failed\n");
return -1;
}
// Enable the Python Development Mode
if (PyInitConfig_SetInt(config, "dev_mode", 1) < 0) {
goto error;
}
// Initialize Python with the configuration
if (Py_InitializeFromInitConfig(config) < 0) {
goto error;
}
PyInitConfig_Free(config);
return 0;
error:
{
// Display the error message.
//
// This uncommon braces style is used, because you cannot make
// goto targets point to variable declarations.
const char *err_msg;
(void)PyInitConfig_GetError(config, &err_msg);
printf("PYTHON INIT ERROR: %s\n", err_msg);
PyInitConfig_Free(config);
return -1;
}
}
Konfiguration erstellen¶
-
struct PyInitConfig¶
Undurchsichtige Struktur zur Konfiguration der Python-Initialisierung.
-
PyInitConfig *PyInitConfig_Create(void)¶
Erstellt eine neue Initialisierungskonfiguration mit den Standardwerten von Isolierte Konfiguration.
Sie muss mit
PyInitConfig_Free()freigegeben werden.Gibt
NULLbei einem Fehler bei der Speicherzuweisung zurück.
-
void PyInitConfig_Free(PyInitConfig *config)¶
Gibt den Speicher der Initialisierungskonfiguration config frei.
Wenn config
NULList, wird keine Operation durchgeführt.
Fehlerbehandlung¶
-
int PyInitConfig_GetError(PyInitConfig *config, const char **err_msg)¶
Ruft die Fehlermeldung von config ab.
Setzt *err_msg und gibt
1zurück, wenn ein Fehler gesetzt ist.Setzt *err_msg auf
NULLund gibt andernfalls0zurück.
Eine Fehlermeldung ist ein UTF-8-kodierter String.
Wenn config einen Exit-Code hat, wird der Exit-Code als Fehlermeldung formatiert.
Die Fehlermeldung bleibt gültig, bis eine andere
PyInitConfigFunktion mit config aufgerufen wird. Der Aufrufer muss die Fehlermeldung nicht freigeben.
-
int PyInitConfig_GetExitCode(PyInitConfig *config, int *exitcode)¶
Ruft den Exit-Code von config ab.
Setzt *exitcode und gibt
1zurück, wenn config einen Exit-Code gesetzt hat.Gibt
0zurück, wenn config keinen Exit-Code gesetzt hat.
Nur die Funktion
Py_InitializeFromInitConfig()kann einen Exit-Code setzen, wenn die Optionparse_argvungleich Null ist.Ein Exit-Code kann gesetzt werden, wenn das Parsen der Befehlszeile fehlschlug (Exit-Code
2) oder wenn eine Befehlszeilenoption zur Anzeige der Hilfe aufgefordert wurde (Exit-Code0).
Optionen abrufen¶
Der Optionsname name muss ein nicht-NULL UTF-8 kodierter String sein, der mit Null endet. Siehe Konfigurationsoptionen.
-
int PyInitConfig_HasOption(PyInitConfig *config, const char *name)¶
Prüft, ob die Konfiguration eine Option mit dem Namen name enthält.
Gibt
1zurück, wenn die Option existiert, andernfalls0.
-
int PyInitConfig_GetInt(PyInitConfig *config, const char *name, int64_t *value)¶
Ruft eine Integer-Konfigurationsoption ab.
Setzt *value und gibt bei Erfolg
0zurück.Setzt einen Fehler in config und gibt bei einem Fehler
-1zurück.
-
int PyInitConfig_GetStr(PyInitConfig *config, const char *name, char **value)¶
Ruft eine String-Konfigurationsoption als UTF-8 kodierten String ab, der mit Null endet.
Setzt *value und gibt bei Erfolg
0zurück.Setzt einen Fehler in config und gibt bei einem Fehler
-1zurück.
*value kann auf
NULLgesetzt werden, wenn die Option ein optionaler String ist und die Option nicht gesetzt ist.Bei Erfolg muss der String mit
free(value)freigegeben werden, wenn er nichtNULList.
-
int PyInitConfig_GetStrList(PyInitConfig *config, const char *name, size_t *length, char ***items)¶
Ruft eine String-Listen-Konfigurationsoption als Array von UTF-8 kodierten Strings ab, die mit Null enden.
Setzt *length und *value und gibt bei Erfolg
0zurück.Setzt einen Fehler in config und gibt bei einem Fehler
-1zurück.
Bei Erfolg muss die String-Liste mit
PyInitConfig_FreeStrList(length, items)freigegeben werden.
-
void PyInitConfig_FreeStrList(size_t length, char **items)¶
Gibt den Speicher einer String-Liste frei, die von
PyInitConfig_GetStrList()erstellt wurde.
Optionen festlegen¶
Der Optionsname name muss ein nicht-NULL UTF-8 kodierter String sein, der mit Null endet. Siehe Konfigurationsoptionen.
Einige Konfigurationsoptionen haben Nebeneffekte auf andere Optionen. Diese Logik wird nur implementiert, wenn Py_InitializeFromInitConfig() aufgerufen wird, nicht durch die nachstehenden „Set“-Funktionen. Zum Beispiel setzt die Einstellung von dev_mode auf 1 nicht faulthandler auf 1.
-
int PyInitConfig_SetInt(PyInitConfig *config, const char *name, int64_t value)¶
Setzt eine Integer-Konfigurationsoption.
Gibt bei Erfolg
0zurück.Setzt einen Fehler in config und gibt bei einem Fehler
-1zurück.
-
int PyInitConfig_SetStr(PyInitConfig *config, const char *name, const char *value)¶
Setzt eine String-Konfigurationsoption aus einem UTF-8 kodierten String, der mit Null endet. Der String wird kopiert.
Gibt bei Erfolg
0zurück.Setzt einen Fehler in config und gibt bei einem Fehler
-1zurück.
-
int PyInitConfig_SetStrList(PyInitConfig *config, const char *name, size_t length, char *const *items)¶
Setzt eine String-Listen-Konfigurationsoption aus einem Array von UTF-8 kodierten Strings, die mit Null enden. Die String-Liste wird kopiert.
Gibt bei Erfolg
0zurück.Setzt einen Fehler in config und gibt bei einem Fehler
-1zurück.
Modul¶
-
int PyInitConfig_AddModule(PyInitConfig *config, const char *name, PyObject *(*initfunc)(void))¶
Fügt ein integriertes Erweiterungsmodul zur Tabelle der integrierten Module hinzu.
Das neue Modul kann unter dem Namen name importiert werden und verwendet die Funktion initfunc als Initialisierungsfunktion, die beim ersten Importversuch aufgerufen wird.
Gibt bei Erfolg
0zurück.Setzt einen Fehler in config und gibt bei einem Fehler
-1zurück.
Wenn Python mehrmals initialisiert wird, muss
PyInitConfig_AddModule()bei jeder Python-Initialisierung aufgerufen werden.Ähnlich wie die Funktion
PyImport_AppendInittab().
Python initialisieren¶
-
int Py_InitializeFromInitConfig(PyInitConfig *config)¶
Initialisiert Python aus der Initialisierungskonfiguration.
Gibt bei Erfolg
0zurück.Setzt einen Fehler in config und gibt bei einem Fehler
-1zurück.Setzt einen Exit-Code in config und gibt
-1zurück, wenn Python beendet werden soll.
Siehe
PyInitConfig_GetExitcode()für den Fall eines Exit-Codes.
Konfigurationsoptionen¶
Option |
PyConfig/PyPreConfig Mitglied |
Typ |
Sichtbarkeit |
|---|---|---|---|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Öffentlich |
|
|
|
Nur-Lese |
Sichtbarkeit
Öffentlich: Kann von
PyConfig_Get()abgerufen und vonPyConfig_Set()gesetzt werden.Nur-Lese: Kann von
PyConfig_Get()abgerufen, aber nicht vonPyConfig_Set()gesetzt werden.
Runtime Python Konfigurations-API¶
Zur Laufzeit können Konfigurationsoptionen mit den Funktionen PyConfig_Get() und PyConfig_Set() abgerufen und gesetzt werden.
Der Optionsname name muss ein nicht-NULL UTF-8 kodierter String sein, der mit Null endet. Siehe Konfigurationsoptionen.
Einige Optionen werden aus den sys Attributen gelesen. Zum Beispiel wird die Option "argv" aus sys.argv gelesen.
-
PyObject *PyConfig_Get(const char *name)¶
Ruft den aktuellen Laufzeitwert einer Konfigurationsoption als Python-Objekt ab.
Gibt eine neue Referenz bei Erfolg zurück.
Setzt eine Ausnahme und gibt bei Fehler
NULLzurück.
Der Objekttyp hängt von der Konfigurationsoption ab. Er kann sein
boolintstrlist[str]dict[str, str]
Der Aufrufer muss einen angehängten Thread-Status haben. Die Funktion kann nicht vor der Python-Initialisierung oder nach der Python-Finalisierung aufgerufen werden.
Hinzugefügt in Version 3.14.
-
int PyConfig_GetInt(const char *name, int *value)¶
Ähnlich wie
PyConfig_Get(), ruft aber den Wert als C-Integer ab.Gibt bei Erfolg
0zurück.Setzt eine Ausnahme und gibt bei Fehler
-1zurück.
Hinzugefügt in Version 3.14.
-
PyObject *PyConfig_Names(void)¶
Ruft alle Konfigurationsoptionsnamen als
frozensetab.Gibt eine neue Referenz bei Erfolg zurück.
Setzt eine Ausnahme und gibt bei Fehler
NULLzurück.
Der Aufrufer muss einen angehängten Thread-Status haben. Die Funktion kann nicht vor der Python-Initialisierung oder nach der Python-Finalisierung aufgerufen werden.
Hinzugefügt in Version 3.14.
-
int PyConfig_Set(const char *name, PyObject *value)¶
Setzt den aktuellen Laufzeitwert einer Konfigurationsoption.
Löst einen
ValueErroraus, wenn keine Option name existiert.Löst einen
ValueErroraus, wenn value ein ungültiger Wert ist.Löst einen
ValueErroraus, wenn die Option schreibgeschützt ist (nicht gesetzt werden kann).Löst einen
TypeErroraus, wenn value nicht den richtigen Typ hat.
Der Aufrufer muss einen angehängten Thread-Status haben. Die Funktion kann nicht vor der Python-Initialisierung oder nach der Python-Finalisierung aufgerufen werden.
Löst ein Audit-Ereignis
cpython.PyConfig_Setmit den Argumentennameundvalueaus.Hinzugefügt in Version 3.14.
PyConfig C API¶
Hinzugefügt in Version 3.8.
Python kann mit Py_InitializeFromConfig() und der Struktur PyConfig initialisiert werden. Sie kann mit Py_PreInitialize() und der Struktur PyPreConfig vorinitialisiert werden.
Es gibt zwei Arten von Konfiguration
Die Python-Konfiguration kann verwendet werden, um ein benutzerdefiniertes Python zu erstellen, das sich wie das reguläre Python verhält. Zum Beispiel werden Umgebungsvariablen und Befehlszeilenargumente zur Konfiguration von Python verwendet.
Die Isolierte Konfiguration kann verwendet werden, um Python in eine Anwendung einzubetten. Sie isoliert Python vom System. Zum Beispiel werden Umgebungsvariablen ignoriert, die LC_CTYPE-Locale unverändert gelassen und kein Signal-Handler registriert.
Die Funktion Py_RunMain() kann verwendet werden, um ein benutzerdefiniertes Python-Programm zu schreiben.
Siehe auch Initialisierung, Finalisierung und Threads.
Siehe auch
PEP 587 „Python Initialization Configuration“.
Beispiel¶
Beispiel für ein benutzerdefiniertes Python, das immer im isolierten Modus ausgeführt wird
int main(int argc, char **argv)
{
PyStatus status;
PyConfig config;
PyConfig_InitPythonConfig(&config);
config.isolated = 1;
/* Decode command line arguments.
Implicitly preinitialize Python (in isolated mode). */
status = PyConfig_SetBytesArgv(&config, argc, argv);
if (PyStatus_Exception(status)) {
goto exception;
}
status = Py_InitializeFromConfig(&config);
if (PyStatus_Exception(status)) {
goto exception;
}
PyConfig_Clear(&config);
return Py_RunMain();
exception:
PyConfig_Clear(&config);
if (PyStatus_IsExit(status)) {
return status.exitcode;
}
/* Display the error message and exit the process with
non-zero exit code */
Py_ExitStatusException(status);
}
PyWideStringList¶
-
type PyWideStringList¶
Liste von
wchar_t*Strings.Wenn length ungleich Null ist, muss items nicht
NULLsein und alle Strings dürfen nichtNULLsein.Methoden
-
PyStatus PyWideStringList_Append(PyWideStringList *list, const wchar_t *item)¶
Fügt item an list an.
Python muss vorinitialisiert sein, um diese Funktion aufzurufen.
-
PyStatus PyWideStringList_Insert(PyWideStringList *list, Py_ssize_t index, const wchar_t *item)¶
Fügt item bei index in list ein.
Wenn index größer oder gleich der Länge von list ist, wird item an list angehängt.
index muss größer oder gleich
0sein.Python muss vorinitialisiert sein, um diese Funktion aufzurufen.
Strukturfelder
-
Py_ssize_t length¶
Listenlänge.
-
wchar_t **items¶
Listenelemente.
-
PyStatus PyWideStringList_Append(PyWideStringList *list, const wchar_t *item)¶
PyStatus¶
-
type PyStatus¶
Struktur zur Speicherung eines Initialisierungsfunktionsstatus: Erfolg, Fehler oder Beenden.
Bei einem Fehler kann sie den C-Funktionsnamen speichern, der den Fehler verursacht hat.
Strukturfelder
-
int exitcode¶
Exit-Code. Argument, das an
exit()übergeben wird.
-
const char *err_msg¶
Fehlermeldung.
-
const char *func¶
Name der Funktion, die einen Fehler verursacht hat, kann
NULLsein.
Funktionen zum Erstellen eines Status
-
PyStatus PyStatus_Error(const char *err_msg)¶
Initialisierungsfehler mit einer Meldung.
err_msg darf nicht
NULLsein.
Funktionen zur Behandlung eines Status
-
int PyStatus_Exception(PyStatus status)¶
Ist der Status ein Fehler oder ein Beenden? Wenn wahr, muss die Ausnahme behandelt werden; beispielsweise durch Aufrufen von
Py_ExitStatusException().
-
void Py_ExitStatusException(PyStatus status)¶
Rufen Sie
exit(exitcode)auf, wenn status ein Abbruch ist. Geben Sie die Fehlermeldung aus und beenden Sie mit einem von Null verschiedenen Exit-Code, wenn status ein Fehler ist. Darf nur aufgerufen werden, wennPyStatus_Exception(status)ungleich Null ist.
-
int exitcode¶
Hinweis
Intern verwendet Python Makros, die PyStatus.func setzen, während Funktionen zum Erstellen eines Status func auf NULL setzen.
Beispiel
PyStatus alloc(void **ptr, size_t size)
{
*ptr = PyMem_RawMalloc(size);
if (*ptr == NULL) {
return PyStatus_NoMemory();
}
return PyStatus_Ok();
}
int main(int argc, char **argv)
{
void *ptr;
PyStatus status = alloc(&ptr, 16);
if (PyStatus_Exception(status)) {
Py_ExitStatusException(status);
}
PyMem_Free(ptr);
return 0;
}
PyPreConfig¶
-
type PyPreConfig¶
Struktur zur Vorinitialisierung von Python.
Funktion zur Initialisierung einer Vorabkonfiguration
-
void PyPreConfig_InitPythonConfig(PyPreConfig *preconfig)¶
Initialisiert die Vorabkonfiguration mit der Python-Konfiguration.
-
void PyPreConfig_InitIsolatedConfig(PyPreConfig *preconfig)¶
Initialisiert die Vorabkonfiguration mit der isolierten Konfiguration.
Strukturfelder
-
int allocator¶
Name der Python-Speicherallokatoren
PYMEM_ALLOCATOR_NOT_SET(0): Speicherallokatoren nicht ändern (Standardwerte verwenden).PYMEM_ALLOCATOR_DEFAULT(1): Standard-Speicherallokatoren.PYMEM_ALLOCATOR_DEBUG(2): Standard-Speicherallokatoren mit Debug-Hooks.PYMEM_ALLOCATOR_MALLOC(3):malloc()der C-Bibliothek verwenden.PYMEM_ALLOCATOR_MALLOC_DEBUG(4): Erzwinge die Verwendung vonmalloc()mit Debug-Hooks.PYMEM_ALLOCATOR_PYMALLOC(5): Python-Speicherallokator pymalloc.PYMEM_ALLOCATOR_PYMALLOC_DEBUG(6): Python-Speicherallokator pymalloc mit Debug-Hooks.PYMEM_ALLOCATOR_MIMALLOC(6): Verwenden Siemimalloc, einen schnellen malloc-Ersatz.PYMEM_ALLOCATOR_MIMALLOC_DEBUG(7): Verwenden Siemimalloc, einen schnellen malloc-Ersatz mit Debug-Hooks.
PYMEM_ALLOCATOR_PYMALLOCundPYMEM_ALLOCATOR_PYMALLOC_DEBUGwerden nicht unterstützt, wenn Python mit--without-pymallockonfiguriert wurde.PYMEM_ALLOCATOR_MIMALLOCundPYMEM_ALLOCATOR_MIMALLOC_DEBUGwerden nicht unterstützt, wenn Python mit--without-mimallockonfiguriert wurde oder wenn die zugrunde liegende atomare Unterstützung nicht verfügbar ist.Siehe Speicherverwaltung.
Standard:
PYMEM_ALLOCATOR_NOT_SET.
-
int configure_locale¶
Setzt das LC_CTYPE-Gebietsschema auf das vom Benutzer bevorzugte Gebietsschema.
Wenn gleich
0, werden die Membercoerce_c_localeundcoerce_c_locale_warnauf0gesetzt.Siehe Gebietsschema-Kodierung.
Standard:
1in Python-Konfiguration,0in isolierter Konfiguration.
-
int coerce_c_locale¶
Wenn gleich
2, erzwinge das C-Gebietsschema.Wenn gleich
1, lese das LC_CTYPE-Gebietsschema, um zu entscheiden, ob es erzwungen werden soll.Siehe Gebietsschema-Kodierung.
Standard:
-1in Python-Konfiguration,0in isolierter Konfiguration.
-
int coerce_c_locale_warn¶
Wenn ungleich Null, gebe eine Warnung aus, wenn das C-Gebietsschema erzwungen wird.
Standard:
-1in Python-Konfiguration,0in isolierter Konfiguration.
-
int dev_mode¶
Python-Entwicklermodus: siehe
PyConfig.dev_mode.Standard:
-1im Python-Modus,0im isolierten Modus.
-
int isolated¶
Isolierter Modus: siehe
PyConfig.isolated.Standard:
0im Python-Modus,1im isolierten Modus.
-
int legacy_windows_fs_encoding¶
Wenn ungleich Null
Setze
PyPreConfig.utf8_modeauf0,Setze
PyConfig.filesystem_encodingauf"mbcs",Setze
PyConfig.filesystem_errorsauf"replace".
Initialisiert aus dem Wert der Umgebungsvariablen
PYTHONLEGACYWINDOWSFSENCODING.Nur unter Windows verfügbar.
#ifdef MS_WINDOWSkann für Windows-spezifischen Code verwendet werden.Standard:
0.
-
int parse_argv¶
Wenn ungleich Null, parsen
Py_PreInitializeFromArgs()undPy_PreInitializeFromBytesArgs()ihrargv-Argument genauso wie das reguläre Python Kommandozeilenargumente parst: siehe Kommandozeilenargumente.Standard:
1in Python-Konfiguration,0in isolierter Konfiguration.
-
int use_environment¶
Umgebungsvariablen (Umgebungsvariablen) verwenden? Siehe
PyConfig.use_environment.Standard:
1in Python-Konfiguration und0in isolierter Konfiguration.
-
int utf8_mode¶
Wenn ungleich Null, aktiviere den Python UTF-8-Modus.
Auf
0oder1gesetzt durch die Kommandozeilenoption-X utf8und die UmgebungsvariablePYTHONUTF8.Ebenfalls auf
1gesetzt, wenn dasLC_CTYPE-GebietsschemaCoderPOSIXist.Standard:
-1in Python-Konfiguration und0in isolierter Konfiguration.
-
void PyPreConfig_InitPythonConfig(PyPreConfig *preconfig)¶
Python mit PyPreConfig vorinitialisieren¶
Die Vorinitialisierung von Python
Setzen der Python-Speicherallokatoren (
PyPreConfig.allocator)Konfigurieren des LC_CTYPE-Gebietsschemas (Gebietsschema-Kodierung)
Setzen des Python UTF-8-Modus (
PyPreConfig.utf8_mode)
Die aktuelle Vorabkonfiguration (Typ PyPreConfig) wird in _PyRuntime.preconfig gespeichert.
Funktionen zur Vorinitialisierung von Python
-
PyStatus Py_PreInitialize(const PyPreConfig *preconfig)¶
Initialisiert Python aus der Vorabkonfiguration preconfig vor.
preconfig darf nicht
NULLsein.
-
PyStatus Py_PreInitializeFromBytesArgs(const PyPreConfig *preconfig, int argc, char *const *argv)¶
Initialisiert Python aus der Vorabkonfiguration preconfig vor.
Parst die Kommandozeilenargumente argv (Byte-Strings), wenn
parse_argvvon preconfig ungleich Null ist.preconfig darf nicht
NULLsein.
-
PyStatus Py_PreInitializeFromArgs(const PyPreConfig *preconfig, int argc, wchar_t *const *argv)¶
Initialisiert Python aus der Vorabkonfiguration preconfig vor.
Parst die Kommandozeilenargumente argv (Wide-Strings), wenn
parse_argvvon preconfig ungleich Null ist.preconfig darf nicht
NULLsein.
Der Aufrufer ist verantwortlich für die Behandlung von Ausnahmen (Fehler oder Abbruch) mit PyStatus_Exception() und Py_ExitStatusException().
Für die Python-Konfiguration (PyPreConfig_InitPythonConfig()), wenn Python mit Kommandozeilenargumenten initialisiert wird, müssen die Kommandozeilenargumente auch zur Vorinitialisierung von Python übergeben werden, da sie die Vorabkonfiguration beeinflussen, z. B. Kodierungen. Zum Beispiel aktiviert die Kommandozeilenoption -X utf8 den Python UTF-8-Modus.
PyMem_SetAllocator() kann nach Py_PreInitialize() und vor Py_InitializeFromConfig() aufgerufen werden, um einen benutzerdefinierten Speicherallokator zu installieren. Er kann vor Py_PreInitialize() aufgerufen werden, wenn PyPreConfig.allocator auf PYMEM_ALLOCATOR_NOT_SET gesetzt ist.
Python-Speicherallokationsfunktionen wie PyMem_RawMalloc() dürfen vor der Python-Vorinitialisierung nicht verwendet werden, während das direkte Aufrufen von malloc() und free() immer sicher ist. Py_DecodeLocale() darf nicht vor der Python-Vorinitialisierung aufgerufen werden.
Beispiel zur Verwendung der Vorinitialisierung zur Aktivierung des Python UTF-8-Modus
PyStatus status;
PyPreConfig preconfig;
PyPreConfig_InitPythonConfig(&preconfig);
preconfig.utf8_mode = 1;
status = Py_PreInitialize(&preconfig);
if (PyStatus_Exception(status)) {
Py_ExitStatusException(status);
}
/* at this point, Python speaks UTF-8 */
Py_Initialize();
/* ... use Python API here ... */
Py_Finalize();
PyConfig¶
-
type PyConfig¶
Struktur, die die meisten Parameter zur Konfiguration von Python enthält.
Nach Abschluss muss die Funktion
PyConfig_Clear()verwendet werden, um den Speicher der Konfiguration freizugeben.Strukturmethoden
-
void PyConfig_InitPythonConfig(PyConfig *config)¶
Initialisiert die Konfiguration mit der Python-Konfiguration.
-
void PyConfig_InitIsolatedConfig(PyConfig *config)¶
Initialisiert die Konfiguration mit der isolierten Konfiguration.
-
PyStatus PyConfig_SetString(PyConfig *config, wchar_t *const *config_str, const wchar_t *str)¶
Kopiert den Wide-Character-String str nach
*config_str.Python vorinitialisieren, falls erforderlich.
-
PyStatus PyConfig_SetBytesString(PyConfig *config, wchar_t *const *config_str, const char *str)¶
Dekodiert str mit
Py_DecodeLocale()und setzt das Ergebnis in*config_str.Python vorinitialisieren, falls erforderlich.
-
PyStatus PyConfig_SetArgv(PyConfig *config, int argc, wchar_t *const *argv)¶
Setzt die Kommandozeilenargumente (
-Member von config) aus der Liste der Wide-Character-Strings argv.argvPython vorinitialisieren, falls erforderlich.
-
PyStatus PyConfig_SetBytesArgv(PyConfig *config, int argc, char *const *argv)¶
Setzt die Kommandozeilenargumente (
-Member von config) aus der Liste der Byte-Strings argv. Dekodiert Bytes mitargvPy_DecodeLocale().Python vorinitialisieren, falls erforderlich.
-
PyStatus PyConfig_SetWideStringList(PyConfig *config, PyWideStringList *list, Py_ssize_t length, wchar_t **items)¶
Setzt die Liste von Wide-Strings list auf length und items.
Python vorinitialisieren, falls erforderlich.
-
PyStatus PyConfig_Read(PyConfig *config)¶
Liest die gesamte Python-Konfiguration.
Bereits initialisierte Felder bleiben unverändert.
Felder für die Pfadkonfiguration werden ab Python 3.11 bei Aufruf dieser Funktion nicht mehr berechnet oder modifiziert.
Die Funktion
PyConfig_Read()parst die Argumente vonPyConfig.argvnur einmal:PyConfig.parse_argvwird nach dem Parsen der Argumente auf2gesetzt. Da Python-Argumente ausPyConfig.argventfernt werden, würde das Parsen der Argumente zweimal die Anwendungsoptionen als Python-Optionen parsen.Python vorinitialisieren, falls erforderlich.
Geändert in Version 3.10: Die Argumente von
PyConfig.argvwerden nun nur noch einmal geparst,PyConfig.parse_argvwird nach dem Parsen der Argumente auf2gesetzt, und Argumente werden nur geparst, wennPyConfig.parse_argvgleich1ist.Geändert in Version 3.11:
PyConfig_Read()berechnet nicht mehr alle Pfade, und daher werden Felder unter Python-Pfadkonfiguration möglicherweise erst aktualisiert, wennPy_InitializeFromConfig()aufgerufen wird.
Die meisten
PyConfig-Methoden initialisieren Python vor, falls erforderlich. In diesem Fall basiert die Vorinitialisierungskonfiguration von Python (PyPreConfig) aufPyConfig. Wenn Konfigurationsfelder, die mitPyPreConfiggemeinsam sind, abgestimmt werden, müssen sie vor dem Aufruf einerPyConfig-Methode gesetzt werden.Darüber hinaus gilt: Wenn
PyConfig_SetArgv()oderPyConfig_SetBytesArgv()verwendet wird, muss diese Methode zuerst aufgerufen werden, da die Vorinitialisierungskonfiguration von den Kommandozeilenargumenten abhängt (wennparse_argvungleich Null ist).Der Aufrufer dieser Methoden ist verantwortlich für die Behandlung von Ausnahmen (Fehler oder Abbruch) mit
PyStatus_Exception()undPy_ExitStatusException().Strukturfelder
-
PyWideStringList argv¶
Setzt
sys.argvKommandozeilenargumente basierend aufargv. Diese Parameter ähneln denen, die an diemain()Funktion des Programms übergeben werden, mit dem Unterschied, dass der erste Eintrag auf die auszuführende Skriptdatei verweisen sollte und nicht auf die ausführbare Datei, die den Python-Interpreter hostet. Wenn kein Skript ausgeführt wird, kann der erste Eintrag inargvein leerer String sein.Setzt
parse_argvauf1, umargvauf die gleiche Weise zu parsen, wie der reguläre Python Python-Kommandozeilenargumente parst, und dann Python-Argumente ausargvzu entfernen.Wenn
argvleer ist, wird ein leerer String hinzugefügt, um sicherzustellen, dasssys.argvimmer existiert und nie leer ist.Standard:
NULL.Siehe auch das Mitglied
orig_argv.
-
int safe_path¶
Wenn gleich null ist, fügt
Py_RunMain()beim Start einen potenziell unsicheren Pfad zusys.pathhinzuWenn
argv[0]gleichL"-m"(python -m modul) ist, wird das aktuelle Arbeitsverzeichnis vorangestellt.Wenn ein Skript ausgeführt wird (
python skript.py), wird das Verzeichnis des Skripts vorangestellt. Wenn es sich um einen symbolischen Link handelt, werden symbolische Links aufgelöst.Andernfalls (
python -c codeundpython) wird ein leerer String vorangestellt, was dem aktuellen Arbeitsverzeichnis entspricht.
Gesetzt auf
1durch die Kommandozeilenoption-Pund die UmgebungsvariablePYTHONSAFEPATH.Standard:
0in Python-Konfiguration,1in isolierter Konfiguration.Hinzugefügt in Version 3.11.
-
wchar_t *base_exec_prefix¶
-
Standard:
NULL.Teil der Ausgabe der Python Pfadkonfiguration.
Siehe auch
PyConfig.exec_prefix.
-
wchar_t *base_executable¶
Python Basis-Executable:
sys._base_executable.Gesetzt durch die Umgebungsvariable
__PYVENV_LAUNCHER__.Gesetzt aus
PyConfig.executable, wennNULL.Standard:
NULL.Teil der Ausgabe der Python Pfadkonfiguration.
Siehe auch
PyConfig.executable.
-
wchar_t *base_prefix¶
-
Standard:
NULL.Teil der Ausgabe der Python Pfadkonfiguration.
Siehe auch
PyConfig.prefix.
-
int buffered_stdio¶
Wenn gleich
0undconfigure_c_stdioungleich null ist, deaktiviert die Pufferung auf den C-Streams stdout und stderr.Gesetzt auf
0durch die Kommandozeilenoption-uund die UmgebungsvariablePYTHONUNBUFFERED.stdin wird immer im Pufferungsmodus geöffnet.
Standard:
1.
-
int bytes_warning¶
Wenn gleich
1, wird eine Warnung ausgegeben, wennbytesoderbytearraymitstrverglichen werden, oder wennbytesmitintverglichen werden.Wenn gleich oder größer als
2, wird in diesen Fällen eineBytesWarningAusnahme ausgelöst.Inkrementiert durch die Kommandozeilenoption
-b.Standard:
0.
-
int warn_default_encoding¶
Wenn ungleich null, wird eine
EncodingWarningWarnung ausgegeben, wennio.TextIOWrapperseine Standardkodierung verwendet. Siehe Opt-in EncodingWarning für Details.Standard:
0.Hinzugefügt in Version 3.10.
-
int code_debug_ranges¶
Wenn gleich
0, deaktiviert die Einbeziehung der Endzeilen- und Spaltenzuordnungen in Code-Objekte. Deaktiviert auch das Drucken von Tracebacks mit Carets auf spezifische Fehlerpositionen.Gesetzt auf
0durch die UmgebungsvariablePYTHONNODEBUGRANGESund durch die Kommandozeilenoption-X no_debug_ranges.Standard:
1.Hinzugefügt in Version 3.11.
-
wchar_t *check_hash_pycs_mode¶
Steuert das Validierungsverhalten von Hash-basierten
.pycDateien: Wert der Kommandozeilenoption--check-hash-based-pycs.Gültige Werte
L"always": Hash der Quellcodedatei für die Invalidierung, unabhängig vom Wert des 'check_source'-Flags.L"never": Geht davon aus, dass Hash-basierte pycs immer gültig sind.L"default": Das 'check_source'-Flag in Hash-basierten pycs bestimmt die Invalidierung.
Standard:
L"default".Siehe auch PEP 552 „Deterministic pycs“.
-
int configure_c_stdio¶
Wenn ungleich null, konfiguriert C Standard-Streams
Unter Windows wird der Binärmodus (
O_BINARY) für stdin, stdout und stderr gesetzt.Wenn
buffered_stdiogleich null ist, wird die Pufferung von stdin, stdout und stderr Streams deaktiviert.Wenn
interactiveungleich null ist, wird die Stream-Pufferung für stdin und stdout aktiviert (nur stdout unter Windows).
Standard:
1in Python-Konfiguration,0in isolierter Konfiguration.
-
int dev_mode¶
Wenn ungleich null, aktiviert den Python Entwicklungsmodus.
Gesetzt auf
1durch die Option-X devund die UmgebungsvariablePYTHONDEVMODE.Standard:
-1im Python-Modus,0im isolierten Modus.
-
int dump_refs¶
Python Referenzen ausgeben?
Wenn ungleich null, werden alle Objekte ausgegeben, die beim Beenden noch am Leben sind.
Gesetzt auf
1durch die UmgebungsvariablePYTHONDUMPREFS.Benötigt eine spezielle Python-Build mit der definierten Makro
Py_TRACE_REFS: siehe die Optionconfigure --with-trace-refs option.Standard:
0.
-
wchar_t *dump_refs_file¶
Dateiname, in den Python Referenzen ausgegeben werden sollen.
Gesetzt durch die Umgebungsvariable
PYTHONDUMPREFSFILE.Standard:
NULL.Hinzugefügt in Version 3.11.
-
wchar_t *exec_prefix¶
Das standortspezifische Verzeichnispräfix, in das die plattformabhängigen Python-Dateien installiert werden:
sys.exec_prefix.Standard:
NULL.Teil der Ausgabe der Python Pfadkonfiguration.
Siehe auch
PyConfig.base_exec_prefix.
-
wchar_t *executable¶
Der absolute Pfad der ausführbaren Binärdatei für den Python-Interpreter:
sys.executable.Standard:
NULL.Teil der Ausgabe der Python Pfadkonfiguration.
Siehe auch
PyConfig.base_executable.
-
int faulthandler¶
Faulthandler aktivieren?
Wenn ungleich null, wird
faulthandler.enable()beim Start aufgerufen.Gesetzt auf
1durch-X faulthandlerund die UmgebungsvariablePYTHONFAULTHANDLER.Standard:
-1im Python-Modus,0im isolierten Modus.
-
wchar_t *filesystem_encoding¶
Dateisystemkodierung:
sys.getfilesystemencoding().Unter macOS, Android und VxWorks: Standardmäßig wird
"utf-8"verwendet.Unter Windows: Standardmäßig wird
"utf-8"verwendet, oder"mbcs", wennlegacy_windows_fs_encodingvonPyPreConfigungleich null ist.Standardkodierung auf anderen Plattformen
"utf-8", wennPyPreConfig.utf8_modeungleich null ist."ascii", wenn Python erkennt, dassnl_langinfo(CODESET)die ASCII-Kodierung ankündigt, während die Funktionmbstowcs()aus einer anderen Kodierung dekodiert (normalerweise Latin1)."utf-8", wennnl_langinfo(CODESET)einen leeren String zurückgibt.Andernfalls wird die Locale-Kodierung verwendet: Ergebnis von
nl_langinfo(CODESET).
Beim Python-Start wird der Name der Kodierung in den Python-Codec-Namen normalisiert. Zum Beispiel wird
"ANSI_X3.4-1968"durch"ascii"ersetzt.Siehe auch das Mitglied
filesystem_errors.
-
wchar_t *filesystem_errors¶
Dateisystem-Fehlerbehandlung:
sys.getfilesystemencodeerrors().Unter Windows: Standardmäßig wird
"surrogatepass"verwendet, oder"replace", wennlegacy_windows_fs_encodingvonPyPreConfigungleich null ist.Auf anderen Plattformen: Standardmäßig wird
"surrogateescape"verwendet.Unterstützte Fehlerbehandler
"strict""surrogateescape""surrogatepass"(nur unterstützt mit der UTF-8-Kodierung)
Siehe auch das Mitglied
filesystem_encoding.
-
int use_frozen_modules¶
Wenn ungleich null, werden eingefrorene Module verwendet.
Gesetzt durch die Umgebungsvariable
PYTHON_FROZEN_MODULES.Standard:
1in einem Release-Build, oder0in einem Debug-Build.
-
unsigned long hash_seed¶
-
int use_hash_seed¶
Zufälliger Seed für die Hash-Funktion.
Wenn
use_hash_seednull ist, wird beim Python-Start zufällig ein Seed gewählt, undhash_seedwird ignoriert.Gesetzt durch die Umgebungsvariable
PYTHONHASHSEED.Standardwert für use_hash_seed:
-1im Python-Modus,0im isolierten Modus.
-
wchar_t *home¶
Setzt das Standard-Python-„Home“-Verzeichnis, d. h. den Speicherort der Standard-Python-Bibliotheken (siehe
PYTHONHOME).Gesetzt durch die Umgebungsvariable
PYTHONHOME.Standard:
NULL.Teil der Eingabe der Python Pfadkonfiguration.
-
int import_time¶
Wenn
1, wird die Importzeit profiliert. Wenn2, werden zusätzliche Ausgaben eingeschlossen, die anzeigen, wann ein importiertes Modul bereits geladen wurde.Gesetzt durch die Option
-X importtimeund die UmgebungsvariablePYTHONPROFILEIMPORTTIME.Standard:
0.Geändert in Version 3.14: Unterstützung für
import_time = 2hinzugefügt
-
int inspect¶
Interaktiven Modus nach Ausführung eines Skripts oder Befehls aufrufen.
Wenn größer als
0, wird Inspect aktiviert: Wenn ein Skript als erstes Argument übergeben wird oder die Option -c verwendet wird, wird nach Ausführung des Skripts oder Befehls in den interaktiven Modus gewechselt, auch wennsys.stdinkein Terminal zu sein scheint.Inkrementiert durch die Kommandozeilenoption
-i. Gesetzt auf1, wenn die UmgebungsvariablePYTHONINSPECTnicht leer ist.Standard:
0.
-
int install_signal_handlers¶
Python Signal-Handler installieren?
Standard:
1im Python-Modus,0im isolierten Modus.
-
int interactive¶
Wenn größer als
0, wird der interaktive Modus (REPL) aktiviert.Inkrementiert durch die Kommandozeilenoption
-i.Standard:
0.
-
int int_max_str_digits¶
Konfiguriert die Längenbeschränkung für die Integer-String-Konvertierung. Ein initialer Wert von
-1bedeutet, dass der Wert von der Kommandozeile oder Umgebung übernommen wird oder andernfalls auf 4300 standardmäßig gesetzt wird (sys.int_info.default_max_str_digits). Ein Wert von0deaktiviert die Beschränkung. Werte größer als null, aber kleiner als 640 (sys.int_info.str_digits_check_threshold) sind nicht unterstützt und führen zu einem Fehler.Konfiguriert durch das Kommandozeilenflag
-X int_max_str_digitsoder die UmgebungsvariablePYTHONINTMAXSTRDIGITS.Standard:
-1im Python-Modus. 4300 (sys.int_info.default_max_str_digits) im isolierten Modus.Hinzugefügt in Version 3.12.
-
int cpu_count¶
Wenn der Wert von
cpu_countnicht-1ist, überschreibt er die Rückgabewerte vonos.cpu_count(),os.process_cpu_count()undmultiprocessing.cpu_count().Konfiguriert durch das Kommandozeilenflag
-X cpu_count=n|defaultoder die UmgebungsvariablePYTHON_CPU_COUNT.Standard:
-1.Hinzugefügt in Version 3.13.
-
int isolated¶
Wenn größer als
0, wird der isolierte Modus aktiviertSetzt
safe_pathauf1: fügt keinen potenziell unsicheren Pfad zusys.pathbeim Python-Start hinzu, wie das aktuelle Verzeichnis, das Verzeichnis des Skripts oder ein leerer String.Setzt
use_environmentauf0: ignoriertPYTHONUmgebungsvariablen.Setzt
user_site_directoryauf0: fügt das Benutzer-Site-Verzeichnis nicht zusys.pathhinzu.Der Python REPL importiert
readlinenicht und aktiviert keine Standard-Readline-Konfiguration auf interaktiven Eingabeaufforderungen.
Gesetzt auf
1durch die Kommandozeilenoption-I.Standard:
0im Python-Modus,1im isolierten Modus.Siehe auch die Isolierte Konfiguration und
PyPreConfig.isolated.
-
int legacy_windows_stdio¶
Wenn ungleich null, wird
io.FileIOanstelle vonio._WindowsConsoleIOfürsys.stdin,sys.stdoutundsys.stderrverwendet.Gesetzt auf
1, wenn die UmgebungsvariablePYTHONLEGACYWINDOWSSTDIOauf einen nicht leeren String gesetzt ist.Nur unter Windows verfügbar.
#ifdef MS_WINDOWSkann für Windows-spezifischen Code verwendet werden.Standard:
0.Siehe auch PEP 528 (Änderung der Windows-Konsolenkodierung zu UTF-8).
-
int malloc_stats¶
Wenn ungleich null, werden beim Beenden Statistiken über den Python Pymalloc-Speicherallokator ausgegeben.
Gesetzt auf
1durch die UmgebungsvariablePYTHONMALLOCSTATS.Die Option wird ignoriert, wenn Python mit der Option
configure using the --without-pymalloc optionkonfiguriert wurde.Standard:
0.
-
wchar_t *platlibdir¶
Plattform-Bibliotheksverzeichnisname:
sys.platlibdir.Gesetzt durch die Umgebungsvariable
PYTHONPLATLIBDIR.Standard: Wert des Makros
PLATLIBDIR, das durch dieconfigure --with-platlibdir Optiongesetzt wird (Standard:"lib", oder"DLLs"unter Windows).Teil der Eingabe der Python Pfadkonfiguration.
Hinzugefügt in Version 3.9.
Geändert in Version 3.11: Dieses Makro wird nun unter Windows verwendet, um die Standard-Bibliotheks-Erweiterungsmodule zu lokalisieren, typischerweise unter
DLLs. Aus Kompatibilitätsgründen beachten Sie jedoch, dass dieser Wert für beliebige Nicht-Standard-Layouts, einschließlich In-Tree-Builds und virtueller Umgebungen, ignoriert wird.
-
wchar_t *pythonpath_env¶
Modul-Suchpfade (
sys.path) als durchDELIMgetrennter String (os.pathsep).Gesetzt durch die Umgebungsvariable
PYTHONPATH.Standard:
NULL.Teil der Eingabe der Python Pfadkonfiguration.
-
PyWideStringList module_search_paths¶
-
int module_search_paths_set¶
Modul-Suchpfade:
sys.path.Wenn
module_search_paths_setgleich0ist, ersetztPy_InitializeFromConfig()module_search_pathsund setztmodule_search_paths_setauf1.Standard: leere Liste (
module_search_paths) und0(module_search_paths_set).Teil der Ausgabe der Python Pfadkonfiguration.
-
int optimization_level¶
Kompilierungs-Optimierungsstufe
0: Peephole-Optimierer, setzt__debug__aufTrue.1: Stufe 0, entfernt Assertions, setzt__debug__aufFalse.2: Stufe 1, entfernt Docstrings.
Inkrementiert durch die Kommandozeilenoption
-O. Wird auf den Wert der UmgebungsvariablePYTHONOPTIMIZEgesetzt.Standard:
0.
-
PyWideStringList orig_argv¶
Die Liste der ursprünglichen Kommandozeilenargumente, die an die Python-Executable übergeben wurden:
sys.orig_argv.Wenn die Liste
orig_argvleer ist undargvkeine Liste ist, die nur einen leeren String enthält, kopiertPyConfig_Read()argvnachorig_argv, bevorargvmodifiziert wird (fallsparse_argvungleich Null ist).Siehe auch das Mitglied
argvund die FunktionPy_GetArgcArgv().Standard: leere Liste.
Hinzugefügt in Version 3.10.
-
int parse_argv¶
Kommandozeilenargumente parsen?
Wenn gleich
1, parstargvauf dieselbe Weise wie das reguläre Python Kommandozeilenargumente parst, und entfernt Python-Argumente ausargv.Die Funktion
PyConfig_Read()parst die Argumente vonPyConfig.argvnur einmal:PyConfig.parse_argvwird nach dem Parsen der Argumente auf2gesetzt. Da Python-Argumente ausPyConfig.argventfernt werden, würde das Parsen der Argumente zweimal die Anwendungsoptionen als Python-Optionen parsen.Standard:
1im Python-Modus,0im isolierten Modus.Geändert in Version 3.10: Die Argumente von
PyConfig.argvwerden nun nur geparst, wennPyConfig.parse_argvgleich1ist.
-
int parser_debug¶
Parser-Debug-Modus. Wenn größer als
0, schaltet die Parser-Debugging-Ausgabe ein (nur für Experten, abhängig von den Kompilierungsoptionen).Inkrementiert durch die Kommandozeilenoption
-d. Wird auf den Wert der UmgebungsvariablePYTHONDEBUGgesetzt.Benötigt einen Debug-Build von Python (das Makro
Py_DEBUGmuss definiert sein).Standard:
0.
-
int pathconfig_warnings¶
Wenn ungleich Null, darf die Berechnung der Pfadkonfiguration Warnungen nach
stderrprotokollieren. Wenn gleich0, werden diese Warnungen unterdrückt.Standard:
1im Python-Modus,0im isolierten Modus.Teil der Eingabe der Python Pfadkonfiguration.
Geändert in Version 3.11: Gilt nun auch unter Windows.
-
wchar_t *prefix¶
Das standortspezifische Verzeichnispräfix, unter dem die plattformunabhängigen Python-Dateien installiert sind:
sys.prefix.Standard:
NULL.Teil der Ausgabe der Python Pfadkonfiguration.
Siehe auch
PyConfig.base_prefix.
-
wchar_t *program_name¶
Programmname, der zur Initialisierung von
executableund in frühen Fehlermeldungen während der Python-Initialisierung verwendet wird.Unter macOS wird die Umgebungsvariable
PYTHONEXECUTABLEverwendet, falls gesetzt.Wenn das Makro
WITH_NEXT_FRAMEWORKdefiniert ist, wird die Umgebungsvariable__PYVENV_LAUNCHER__verwendet, falls gesetzt.Verwendet
argv[0]vonargv, falls verfügbar und nicht leer.Andernfalls wird
L"python"unter Windows oderL"python3"auf anderen Plattformen verwendet.
Standard:
NULL.Teil der Eingabe der Python Pfadkonfiguration.
-
wchar_t *pycache_prefix¶
Verzeichnis, in das die zwischengespeicherten
.pyc-Dateien geschrieben werden:sys.pycache_prefix.Gesetzt durch die Kommandozeilenoption
-X pycache_prefix=PATHund die UmgebungsvariablePYTHONPYCACHEPREFIX. Die Kommandozeilenoption hat Vorrang.Wenn
NULL, wirdsys.pycache_prefixaufNonegesetzt.Standard:
NULL.
-
int quiet¶
Leiser Modus. Wenn größer als
0, wird die Copyright- und Versionsmeldung beim Python-Start im interaktiven Modus nicht angezeigt.Inkrementiert durch die Kommandozeilenoption
-q.Standard:
0.
-
wchar_t *run_command¶
Wert der Kommandozeilenoption
-c.Wird von
Py_RunMain()verwendet.Standard:
NULL.
-
wchar_t *run_filename¶
Dateiname, der in der Kommandozeile übergeben wird: der letzte Kommandozeilenargument ohne
-coder-m. Er wird von der FunktionPy_RunMain()verwendet.Zum Beispiel wird er zu
script.pydurch die Kommandozeilepython3 script.py arggesetzt.Siehe auch die Option
PyConfig.skip_source_first_line.Standard:
NULL.
-
wchar_t *run_module¶
Wert der Kommandozeilenoption
-m.Wird von
Py_RunMain()verwendet.Standard:
NULL.
-
wchar_t *run_presite¶
package.modulePfad zu einem Modul, das importiert werden soll, bevorsite.pyausgeführt wird.Gesetzt durch die Kommandozeilenoption
-X presite=package.moduleund die UmgebungsvariablePYTHON_PRESITE. Die Kommandozeilenoption hat Vorrang.Benötigt einen Debug-Build von Python (das Makro
Py_DEBUGmuss definiert sein).Standard:
NULL.
-
int show_ref_count¶
Gesamte Referenzanzahl beim Beenden anzeigen (ohne unsterbliche Objekte)?
Wird durch die Kommandozeilenoption
-X showrefcountauf1gesetzt.Benötigt einen Debug-Build von Python (das Makro
Py_REF_DEBUGmuss definiert sein).Standard:
0.
-
int site_import¶
Das Modul
sitebeim Start importieren?Wenn gleich Null, wird der Import des Moduls
siteund die damit verbundenen standortabhängigen Manipulationen vonsys.pathdeaktiviert.Diese Manipulationen werden auch deaktiviert, wenn das Modul
sitespäter explizit importiert wird (rufen Siesite.main()auf, wenn Sie sie auslösen möchten).Wird durch die Kommandozeilenoption
-Sauf0gesetzt.sys.flags.no_sitewird auf den invertierten Wert vonsite_importgesetzt.Standard:
1.
-
int skip_source_first_line¶
Wenn ungleich Null, überspringt die erste Zeile der Quelldatei von
PyConfig.run_filename.Dies ermöglicht die Verwendung von Nicht-Unix-Formen von
#!cmd. Dies ist nur für einen DOS-spezifischen Hack gedacht.Wird durch die Kommandozeilenoption
-xauf1gesetzt.Standard:
0.
-
wchar_t *stdio_encoding¶
-
wchar_t *stdio_errors¶
Encoding und Fehlerbehandlung von
sys.stdin,sys.stdoutundsys.stderr(abersys.stderrverwendet immer den Fehlerhandler"backslashreplace").Verwendet die Umgebungsvariable
PYTHONIOENCODING, wenn sie nicht leer ist.Standard-Encoding
"UTF-8", wennPyPreConfig.utf8_modeungleich Null ist.Andernfalls wird das Locale-Encoding verwendet.
Standard-Fehlerbehandler
Unter Windows: verwendet
"surrogateescape"."surrogateescape", wennPyPreConfig.utf8_modeungleich Null ist, oder wenn das LC_CTYPE-Locale „C“ oder „POSIX“ ist."strict"andernfalls.
Siehe auch
PyConfig.legacy_windows_stdio.
-
int tracemalloc¶
tracemalloc aktivieren?
Wenn ungleich Null, wird
tracemalloc.start()beim Start aufgerufen.Gesetzt durch die Kommandozeilenoption
-X tracemalloc=Nund die UmgebungsvariablePYTHONTRACEMALLOC.Standard:
-1im Python-Modus,0im isolierten Modus.
-
int perf_profiling¶
Linux
perfProfiler-Unterstützung aktivieren?Wenn gleich
1, wird die Unterstützung für den LinuxperfProfiler aktiviert.Wenn gleich
2, wird die Unterstützung für den LinuxperfProfiler mit DWARF JIT-Unterstützung aktiviert.Wird durch die Kommandozeilenoption
-X perfund die UmgebungsvariablePYTHONPERFSUPPORTauf1gesetzt.Wird durch die Kommandozeilenoption
-X perf_jitund die UmgebungsvariablePYTHON_PERF_JIT_SUPPORTauf2gesetzt.Standard:
-1.Siehe auch
Weitere Informationen finden Sie unter Python-Unterstützung für den Linux perf Profiler.
Hinzugefügt in Version 3.12.
-
wchar_t *stdlib_dir¶
Verzeichnis der Python-Standardbibliothek.
Standard:
NULL.Hinzugefügt in Version 3.11.
-
int use_environment¶
Umgebungsvariablen verwenden?
Wenn gleich Null, werden die Umgebungsvariablen ignoriert.
Wird durch die Umgebungsvariable
-Eauf0gesetzt.Standard:
1in Python-Konfiguration und0in isolierter Konfiguration.
-
int use_system_logger¶
Wenn ungleich Null, werden
stdoutundstderrin das Systemprotokoll umgeleitet.Nur verfügbar unter macOS 10.12 und neuer sowie unter iOS.
Standard:
0(kein Systemprotokoll verwenden) unter macOS;1unter iOS (Systemprotokoll verwenden).Hinzugefügt in Version 3.14.
-
int user_site_directory¶
Wenn ungleich Null, wird das Benutzer-Site-Verzeichnis zu
sys.pathhinzugefügt.Wird durch die Kommandozeilenoptionen
-sund-Iauf0gesetzt.Wird durch die Umgebungsvariable
PYTHONNOUSERSITEauf0gesetzt.Standard:
1im Python-Modus,0im isolierten Modus.
-
int verbose¶
Ausführlicher Modus. Wenn größer als
0, wird bei jedem Modulimport eine Meldung ausgegeben, die den Ort (Dateiname oder integriertes Modul) anzeigt, von dem es geladen wird.Wenn größer oder gleich
2, wird für jede Datei, die bei der Suche nach einem Modul geprüft wird, eine Meldung ausgegeben. Bietet auch Informationen zur Modulbereinigung beim Beenden.Inkrementiert durch die Kommandozeilenoption
-v.Wird durch den Wert der Umgebungsvariable
PYTHONVERBOSEgesetzt.Standard:
0.
-
PyWideStringList warnoptions¶
Optionen des Moduls
warningszum Aufbau von Warnfiltern, von niedrigster zu höchster Priorität:sys.warnoptions.Das Modul
warningsfügtsys.warnoptionsin umgekehrter Reihenfolge hinzu: das letzte Element vonPyConfig.warnoptionswird zum ersten Element vonwarnings.filters, das zuerst geprüft wird (höchste Priorität).Die Kommandozeilenoption
-Wfügt ihren Wert zuwarnoptionshinzu, sie kann mehrfach verwendet werden.Die Umgebungsvariable
PYTHONWARNINGSkann ebenfalls verwendet werden, um Warnoptionen hinzuzufügen. Mehrere Optionen können durch Kommas (,) getrennt angegeben werden.Standard: leere Liste.
-
int write_bytecode¶
Wenn gleich
0, wird Python beim Import von Quellcode-Modulen nicht versuchen,.pyc-Dateien zu schreiben.Wird durch die Kommandozeilenoption
-Bund die UmgebungsvariablePYTHONDONTWRITEBYTECODEauf0gesetzt.sys.dont_write_bytecodewird mit dem invertierten Wert vonwrite_bytecodeinitialisiert.Standard:
1.
-
PyWideStringList xoptions¶
Werte der Kommandozeilenoptionen
-X:sys._xoptions.Standard: leere Liste.
-
int _pystats¶
Wenn ungleich Null, schreibe Performance-Statistiken beim Beenden von Python.
Benötigt einen speziellen Build mit dem Makro
Py_STATS: siehe--enable-pystats.Standard:
0.
-
void PyConfig_InitPythonConfig(PyConfig *config)¶
Wenn parse_argv ungleich Null ist, werden die argv-Argumente auf die gleiche Weise wie die regulären Python-Argumente auf der Kommandozeile geparst, und Python-Argumente werden aus argv entfernt.
Die xoptions-Optionen werden zum Setzen anderer Optionen geparst: siehe die Kommandozeilenoption -X.
Geändert in Version 3.9: Das Feld show_alloc_count wurde entfernt.
Initialisierung mit PyConfig¶
Die Initialisierung des Interpreters aus einer gefüllten Konfigurationsstruktur erfolgt durch Aufrufen von Py_InitializeFromConfig().
Der Aufrufer ist verantwortlich für die Behandlung von Ausnahmen (Fehler oder Abbruch) mit PyStatus_Exception() und Py_ExitStatusException().
Wenn PyImport_FrozenModules(), PyImport_AppendInittab() oder PyImport_ExtendInittab() verwendet werden, müssen sie nach der Python-Vorinitialisierung und vor der Python-Initialisierung gesetzt oder aufgerufen werden. Wenn Python mehrmals initialisiert wird, müssen PyImport_AppendInittab() oder PyImport_ExtendInittab() vor jeder Python-Initialisierung aufgerufen werden.
Die aktuelle Konfiguration (Typ PyConfig) wird in PyInterpreterState.config gespeichert.
Beispiel: Setzen des Programmnamens
void init_python(void)
{
PyStatus status;
PyConfig config;
PyConfig_InitPythonConfig(&config);
/* Set the program name. Implicitly preinitialize Python. */
status = PyConfig_SetString(&config, &config.program_name,
L"/path/to/my_program");
if (PyStatus_Exception(status)) {
goto exception;
}
status = Py_InitializeFromConfig(&config);
if (PyStatus_Exception(status)) {
goto exception;
}
PyConfig_Clear(&config);
return;
exception:
PyConfig_Clear(&config);
Py_ExitStatusException(status);
}
Vollständigeres Beispiel zum Modifizieren der Standardkonfiguration, Lesen der Konfiguration und Überschreiben einiger Parameter. Beachten Sie, dass seit 3.11 viele Parameter erst bei der Initialisierung berechnet werden, daher können Werte nicht aus der Konfigurationsstruktur gelesen werden. Alle Werte, die vor dem Aufruf von initialize gesetzt werden, bleiben bei der Initialisierung unverändert.
PyStatus init_python(const char *program_name)
{
PyStatus status;
PyConfig config;
PyConfig_InitPythonConfig(&config);
/* Set the program name before reading the configuration
(decode byte string from the locale encoding).
Implicitly preinitialize Python. */
status = PyConfig_SetBytesString(&config, &config.program_name,
program_name);
if (PyStatus_Exception(status)) {
goto done;
}
/* Read all configuration at once */
status = PyConfig_Read(&config);
if (PyStatus_Exception(status)) {
goto done;
}
/* Specify sys.path explicitly */
/* If you want to modify the default set of paths, finish
initialization first and then use PySys_GetObject("path") */
config.module_search_paths_set = 1;
status = PyWideStringList_Append(&config.module_search_paths,
L"/path/to/stdlib");
if (PyStatus_Exception(status)) {
goto done;
}
status = PyWideStringList_Append(&config.module_search_paths,
L"/path/to/more/modules");
if (PyStatus_Exception(status)) {
goto done;
}
/* Override executable computed by PyConfig_Read() */
status = PyConfig_SetString(&config, &config.executable,
L"/path/to/my_executable");
if (PyStatus_Exception(status)) {
goto done;
}
status = Py_InitializeFromConfig(&config);
done:
PyConfig_Clear(&config);
return status;
}
Isolierte Konfiguration¶
PyPreConfig_InitIsolatedConfig() und PyConfig_InitIsolatedConfig() erstellen eine Konfiguration, um Python vom System zu isolieren. Zum Beispiel, um Python in eine Anwendung einzubetten.
Diese Konfiguration ignoriert globale Konfigurationsvariablen, Umgebungsvariablen, Kommandozeilenargumente (PyConfig.argv wird nicht geparst) und das Benutzer-Site-Verzeichnis. Die C-Standard-Streams (z. B. stdout) und das LC_CTYPE-Locale bleiben unverändert. Signal-Handler werden nicht installiert.
Konfigurationsdateien werden weiterhin mit dieser Konfiguration verwendet, um nicht spezifizierte Pfade zu ermitteln. Stellen Sie sicher, dass PyConfig.home angegeben ist, um die Berechnung des Standardpfadkonfigurators zu vermeiden.
Python-Konfiguration¶
PyPreConfig_InitPythonConfig() und PyConfig_InitPythonConfig() erstellen eine Konfiguration, um ein angepasstes Python zu erstellen, das sich wie das reguläre Python verhält.
Umgebungsvariablen und Kommandozeilenargumente werden zur Konfiguration von Python verwendet, während globale Konfigurationsvariablen ignoriert werden.
Diese Funktion aktiviert die C-Locale-Koerzion (PEP 538) und den Python UTF-8-Modus (PEP 540) abhängig vom LC_CTYPE-Locale, den Umgebungsvariablen PYTHONUTF8 und PYTHONCOERCECLOCALE.
Python-Pfadkonfiguration¶
PyConfig enthält mehrere Felder für die Pfadkonfiguration.
Pfadkonfigurationseingaben
Aktuelles Arbeitsverzeichnis: zum Erhalten absoluter Pfade
PATH-Umgebungsvariable zum Abrufen des vollständigen Programmpfads (ausPyConfig.program_name)__PYVENV_LAUNCHER__-Umgebungsvariable(Nur Windows) Anwendungspfade in der Registrierung unter „SoftwarePythonPythonCoreX.YPythonPath“ von HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE (wobei X.Y die Python-Version ist).
Pfadkonfigurationsausgabefelder
Wenn mindestens ein „Ausgabefeld“ nicht gesetzt ist, berechnet Python die Pfadkonfiguration, um die ungesetzten Felder zu füllen. Wenn module_search_paths_set gleich 0 ist, wird module_search_paths überschrieben und module_search_paths_set auf 1 gesetzt.
Es ist möglich, die Berechnung der Standardpfadkonfiguration vollständig zu ignorieren, indem alle oben aufgeführten Ausgabefelder für die Pfadkonfiguration explizit gesetzt werden. Ein String wird als gesetzt betrachtet, auch wenn er nicht leer ist. module_search_paths wird als gesetzt betrachtet, wenn module_search_paths_set auf 1 gesetzt ist. In diesem Fall wird module_search_paths ohne Änderung verwendet.
Setzen Sie pathconfig_warnings auf 0, um Warnungen bei der Berechnung der Pfadkonfiguration zu unterdrücken (nur Unix, Windows gibt keine Warnungen aus).
Wenn die Felder base_prefix oder base_exec_prefix nicht gesetzt sind, erben sie ihren Wert von prefix bzw. exec_prefix.
Py_RunMain() und Py_Main() modifizieren sys.path.
Wenn
run_filenamegesetzt ist und ein Verzeichnis ist, das ein__main__.pySkript enthält, wirdrun_filenamevorsys.pathgestellt.Wenn
isolatedNull ist.Wenn
run_modulegesetzt ist, wird das aktuelle Verzeichnis vorsys.pathgestellt. Es passiert nichts, wenn das aktuelle Verzeichnis nicht gelesen werden kann.Wenn
run_filenamegesetzt ist, wird das Verzeichnis des Dateinamens vorsys.pathgestellt.Andernfalls wird ein leerer String vor
sys.pathgestellt.
Wenn site_import ungleich Null ist, kann sys.path vom site-Modul modifiziert werden. Wenn user_site_directory ungleich Null ist und das Verzeichnis der Benutzer-Site-Pakete existiert, fügt das site-Modul das Verzeichnis der Benutzer-Site-Pakete zu sys.path hinzu.
Die folgenden Konfigurationsdateien werden von der Pfadkonfiguration verwendet:
pyvenv.cfg._pth-Datei (z. B.python._pth)pybuilddir.txt(nur Unix)
Wenn eine ._pth-Datei vorhanden ist.
Setzen Sie
isolatedauf1.Setzen Sie
use_environmentauf0.Setzen Sie
site_importauf0.Setzen Sie
safe_pathauf1.
Wenn home nicht gesetzt ist und eine pyvenv.cfg-Datei im selben Verzeichnis wie executable oder dessen Elternverzeichnis vorhanden ist, werden prefix und exec_prefix an diesem Ort gesetzt. Wenn dies geschieht, behalten base_prefix und base_exec_prefix ihren Wert und verweisen auf die Basisinstallation. Siehe Virtuelle Umgebungen für weitere Informationen.
Die Umgebungsvariable __PYVENV_LAUNCHER__ wird verwendet, um PyConfig.base_executable zu setzen.
Geändert in Version 3.14: prefix und exec_prefix werden jetzt auf das Verzeichnis von pyvenv.cfg gesetzt. Dies wurde zuvor von site erledigt und war daher von -S betroffen.
Py_GetArgcArgv()¶
-
void Py_GetArgcArgv(int *argc, wchar_t ***argv)¶
Ruft die ursprünglichen Kommandozeilenargumente ab, bevor Python sie modifiziert hat.
Siehe auch das Feld
PyConfig.orig_argv.
Verzögerung der Ausführung des Hauptmoduls¶
In einigen Einbettungsanwendungsfällen kann es wünschenswert sein, die Interpreterinitialisierung von der Ausführung des Hauptmoduls zu trennen.
Diese Trennung kann erreicht werden, indem PyConfig.run_command während der Initialisierung auf einen leeren String gesetzt wird (um zu verhindern, dass der Interpreter in die interaktive Eingabeaufforderung wechselt) und anschließend der gewünschte Hauptmodulcode über __main__.__dict__ als globalen Namensraum ausgeführt wird.