Konfiguration av Python-initialisering¶
PyInitConfig C API¶
Tillagd i version 3.14.
Python kan initialiseras med Py_InitializeFromInitConfig().
Funktionen Py_RunMain() kan användas för att skriva ett anpassat Python-program.
Se även Initialization, Finalization, and Threads.
Se även
PEP 741 ”Python Configuration C API”.
Exempel¶
Exempel på anpassat Python som alltid körs med Python Development Mode aktiverat; returnerar \-1 vid fel:
int init_python(void)
{
PyInitConfig *config = PyInitConfig_Create();
if (config == NULL) {
printf("PYTHON INIT ERROR: minnesallokering misslyckades\n");
return -1;
}
// Aktivera Pythons utvecklingsläge
if (PyInitConfig_SetInt(config, "dev_mode", 1) < 0) {
gå till fel;
}
// Initiera Python med konfigurationen
if (Py_InitializeFromInitConfig(config) < 0) {
goto fel;
}
PyInitConfig_Free(config);
return 0;
fel:
{
// Visa felmeddelandet.
//
// Denna ovanliga stil med hakparenteser används eftersom man inte kan få
// goto-mål pekar på variabeldeklarationer.
const char *err_msg;
(void)PyInitConfig_GetError(config, &err_msg);
printf("PYTHON INIT ERROR: %s\n", err_msg);
PyInitConfig_Free(config);
return -1;
}
}
Skapa konfiguration¶
-
struct PyInitConfig¶
Ogenomskinlig struktur för att konfigurera Python-initialiseringen.
-
PyInitConfig *PyInitConfig_Create(void)¶
Skapa en ny initieringskonfiguration med hjälp av Isolated Configuration standardvärden.
Den måste frigöras genom
PyInitConfig_Free().Returnerar
NULLom minnesallokeringen misslyckas.
-
void PyInitConfig_Free(PyInitConfig *config)¶
Frigör minne för initialiseringskonfigurationen config.
Om config är
NULLutförs ingen åtgärd.
Felhantering¶
-
int PyInitConfig_GetError(PyInitConfig *config, const char **err_msg)¶
Få felmeddelandet config.
Ställ in *err_msg och returnera
1om ett fel har ställts in.Sätt *err_msg till
NULLoch returnera annars0.
Ett felmeddelande är en UTF-8-kodad sträng.
Om config har en utgångskod, formatera utgångskoden som ett felmeddelande.
Felmeddelandet förblir giltigt tills en annan
PyInitConfig-funktion anropas med config. Den som anropar behöver inte återställa felmeddelandet.
-
int PyInitConfig_GetExitCode(PyInitConfig *config, int *exitcode)¶
Hämta utgångskoden för config.
Ställ in *exitcode och returnera
1om config har en exitkod inställd.Returnerar
0om config inte har någon exitkod inställd.
Endast funktionen
Py_InitializeFromInitConfig()kan ange en utgångskod om alternativetparse_argvinte är noll.En utgångskod kan anges när tolkningen av kommandoraden misslyckades (utgångskod
2) eller när ett kommandoradsalternativ begär att kommandoradshjälpen ska visas (utgångskod0).
Få alternativ¶
Parametern name för konfigurationsalternativet måste vara en UTF-8-kodad sträng med nollavgränsning som inte är NULL. Se Konfigurationsalternativ.
-
int PyInitConfig_HasOption(PyInitConfig *config, const char *name)¶
Testa om konfigurationen har ett alternativ som heter namn.
Returnerar
1om alternativet finns, eller returnerar0annars.
-
int PyInitConfig_GetInt(PyInitConfig *config, const char *name, int64_t *value)¶
Hämta ett konfigurationsalternativ för heltal.
Ställ in *värde och returnera
0vid framgång.Ange ett fel i config och returnera
\-1vid fel.
-
int PyInitConfig_GetStr(PyInitConfig *config, const char *name, char **value)¶
Hämta ett konfigurationsalternativ för en sträng som en nollavslutad UTF-8-kodad sträng.
Ställ in *värde och returnera
0vid framgång.Ange ett fel i config och returnera
\-1vid fel.
*value kan sättas till
NULLom alternativet är en valfri sträng och alternativet inte är inställt.Vid framgång måste strängen släppas med
free(value)om den inte ärNULL.
-
int PyInitConfig_GetStrList(PyInitConfig *config, const char *name, size_t *length, char ***items)¶
Hämta ett konfigurationsalternativ i en stränglista som en array av nollavslutade UTF-8-kodade strängar.
Ställ in *length och *value, och returnera
0vid framgång.Ange ett fel i config och returnera
\-1vid fel.
Vid framgång måste stränglistan släppas med
PyInitConfig_FreeStrList(length, items).
-
void PyInitConfig_FreeStrList(size_t length, char **items)¶
Frigör minne för en stränglista som skapats av
PyInitConfig_GetStrList().
Ställ in alternativ¶
Parametern name för konfigurationsalternativet måste vara en UTF-8-kodad sträng med nollavgränsning som inte är NULL. Se Konfigurationsalternativ.
Vissa konfigurationsalternativ har bieffekter på andra alternativ. Denna logik implementeras endast när Py_InitializeFromInitConfig() anropas, inte av ”Set”-funktionerna nedan. Att till exempel sätta dev_mode till 1 sätter inte faulthandler till 1.
-
int PyInitConfig_SetInt(PyInitConfig *config, const char *name, int64_t value)¶
Ställ in ett konfigurationsalternativ för heltal.
Returnerar
0vid framgång.Ange ett fel i config och returnera
\-1vid fel.
-
int PyInitConfig_SetStr(PyInitConfig *config, const char *name, const char *value)¶
Ställ in ett konfigurationsalternativ för en sträng från en nollavslutad UTF-8-kodad sträng. Strängen kopieras.
Returnerar
0vid framgång.Ange ett fel i config och returnera
\-1vid fel.
-
int PyInitConfig_SetStrList(PyInitConfig *config, const char *name, size_t length, char *const *items)¶
Ange ett konfigurationsalternativ för en stränglista från en array med nollavslutade UTF-8-kodade strängar. Stränglistan kopieras.
Returnerar
0vid framgång.Ange ett fel i config och returnera
\-1vid fel.
Modul¶
-
int PyInitConfig_AddModule(PyInitConfig *config, const char *name, PyObject *(*initfunc)(void))¶
Lägg till en inbyggd tilläggsmodul i tabellen över inbyggda moduler.
Den nya modulen kan importeras med namnet name och använder funktionen initfunc som initialiseringsfunktion som anropas vid första importförsöket.
Returnerar
0vid framgång.Ange ett fel i config och returnera
\-1vid fel.
Om Python initialiseras flera gånger måste
PyInitConfig_AddModule()anropas vid varje Python-initialisering.Liknar funktionen
PyImport_AppendInittab().
Initialisera Python¶
-
int Py_InitializeFromInitConfig(PyInitConfig *config)¶
Initiera Python från initieringskonfigurationen.
Returnerar
0vid framgång.Ange ett fel i config och returnera
\-1vid fel.Ange en utgångskod i config och returnera
\-1om Python vill avsluta.
Se
PyInitConfig_GetExitcode()för utgångskodsfallet.
Alternativ för konfiguration¶
Alternativ |
PyConfig/PyPreConfig-medlem |
Typ |
Synlighet |
|---|---|---|---|
|
|
|
Endast läs |
|
|
Offentlig |
|
|
|
Offentlig |
|
|
|
Offentlig |
|
|
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
|
Offentlig |
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
|
Endast läs |
|
|
Endast läs |
|
|
|
|
Offentlig |
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
|
Offentlig |
”isolerad” |
|
|
Endast läs |
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Offentlig |
|
|
|
|
Endast läs |
|
|
Offentlig |
|
”tyst” |
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Endast läs |
|
|
|
Offentlig |
|
|
|
Offentlig |
|
|
|
Offentlig |
|
|
|
Endast läs |
Synlighet:
Allmän: Kan hämtas med
PyConfig_Get()och ställas in medPyConfig_Set().Skrivskyddad: Kan hämtas med
PyConfig_Get(), men kan inte ställas in medPyConfig_Set().
Python-konfigurations-API för körtid¶
Vid körning är det möjligt att hämta och ställa in konfigurationsalternativ med hjälp av funktionerna PyConfig_Get() och PyConfig_Set().
Parametern name för konfigurationsalternativet måste vara en UTF-8-kodad sträng med nollavgränsning som inte är NULL. Se Konfigurationsalternativ.
Vissa alternativ läses från sys-attributen. Till exempel läses alternativet "argv" från sys.argv.
-
PyObject *PyConfig_Get(const char *name)¶
Hämta det aktuella runtime-värdet för ett konfigurationsalternativ som ett Python-objekt.
Returnerar en ny referens vid framgång.
Ställ in ett undantag och returnera
NULLvid fel.
Objekttypen beror på konfigurationsalternativet. Den kan vara:
boolintstrlist[str]dict[str, str]
Den som anropar måste ha en attached thread state. Funktionen kan inte anropas före Python-initialisering eller efter Python-finalisering.
Tillagd i version 3.14.
-
int PyConfig_GetInt(const char *name, int *value)¶
Liknar
PyConfig_Get(), men får värdet som en C int.Returnerar
0vid framgång.Ställ in ett undantag och returnera
\-1vid fel.
Tillagd i version 3.14.
-
PyObject *PyConfig_Names(void)¶
Hämta alla namn på konfigurationsalternativ som ett
frozenset.Returnerar en ny referens vid framgång.
Ställ in ett undantag och returnera
NULLvid fel.
Den som anropar måste ha en attached thread state. Funktionen kan inte anropas före Python-initialisering eller efter Python-finalisering.
Tillagd i version 3.14.
-
int PyConfig_Set(const char *name, PyObject *value)¶
Ställ in det aktuella runtime-värdet för ett konfigurationsalternativ.
Skapar ett
ValueErrorom det inte finns något alternativ namn.Skapar ett
ValueErrorom värde är ett ogiltigt värde.Skapar ett
ValueErrorom alternativet är skrivskyddat (kan inte ställas in).Skapar ett
TypeErrorom värde inte har rätt typ.
Den som anropar måste ha en attached thread state. Funktionen kan inte anropas före Python-initialisering eller efter Python-finalisering.
Utlöser en auditing-händelse
cpython.PyConfig_Setmed argumentenname,value.Tillagd i version 3.14.
PyConfig C API¶
Tillagd i version 3.8.
Python kan initialiseras med Py_InitializeFromConfig() och PyConfig-strukturen. Den kan förinitialiseras med Py_PreInitialize() och strukturen PyPreConfig.
Det finns två typer av konfigurering:
Python Configuration kan användas för att bygga en anpassad Python som beter sig som den vanliga Python. Till exempel används miljövariabler och kommandoradsargument för att konfigurera Python.
Isolated Configuration kan användas för att bädda in Python i en applikation. Den isolerar Python från systemet. Till exempel ignoreras miljövariabler, LC_CTYPE locale lämnas oförändrad och ingen signalhanterare registreras.
Funktionen Py_RunMain() kan användas för att skriva ett anpassat Python-program.
Se även Initialization, Finalization, and Threads.
Se även
PEP 587 ”Python Initialization Configuration”.
Exempel¶
Exempel på anpassad Python som alltid körs i isolerat läge:
int main(int argc, char **argv)
{
PyStatus status;
PyConfig config;
PyConfig_InitPythonConfig(&config);
config.isolated = 1;
/* Avkoda kommandoradsargument.
Förinitialisera Python implicit (i isolerat läge). */
status = PyConfig_SetBytesArgv(&config, argc, argv);
if (PyStatus_Exception(status)) {
goto undantag;
}
status = Py_InitializeFromConfig(&config);
if (PyStatus_Exception(status)) {
gå till undantaget;
}
PyConfig_Clear(&config);
return Py_RunMain();
undantag:
PyConfig_Clear(&config);
if (PyStatus_IsExit(status)) {
return status.exitcode;
}
/* Visa felmeddelandet och avsluta processen med en
med en utgångskod som inte är noll */
Py_ExitStatusException(status);
}
PyWideStringList¶
-
type PyWideStringList¶
Lista över strängar av typen
wchar_t*.Om length inte är noll måste items vara något annat än
NULLoch alla strängar måste vara något annat änNULL.Metoder:
-
PyStatus PyWideStringList_Append(PyWideStringList *list, const wchar_t *item)¶
Lägg till item till list.
Python måste vara förinitialiserat för att denna funktion ska kunna anropas.
-
PyStatus PyWideStringList_Insert(PyWideStringList *list, Py_ssize_t index, const wchar_t *item)¶
Infoga objekt i lista vid index.
Om index är större än eller lika med list längd, lägg till item till list.
index måste vara större än eller lika med
0.Python måste vara förinitialiserat för att denna funktion ska kunna anropas.
Strukturfält:
-
Py_ssize_t length¶
Listans längd.
-
wchar_t **items¶
Lista objekt.
-
PyStatus PyWideStringList_Append(PyWideStringList *list, const wchar_t *item)¶
PyStatus¶
-
type PyStatus¶
Struktur för att lagra en initialiseringsfunktions status: success, error eller exit.
För ett fel kan det lagra namnet på den C-funktion som skapade felet.
Strukturfält:
-
int exitcode¶
Exit-kod. Argument som skickas till
exit().
-
const char *err_msg¶
Felmeddelande.
-
const char *func¶
Namn på den funktion som skapade ett fel, kan vara
NULL.
Funktioner för att skapa en status:
-
PyStatus PyStatus_Error(const char *err_msg)¶
Initialiseringsfel med ett meddelande.
err_msg får inte vara
NULL.
Funktioner för att hantera en status:
-
int PyStatus_Exception(PyStatus status)¶
Är statusen ett fel eller en exit? Om true måste undantaget hanteras, t.ex. genom att anropa
Py_ExitStatusException().
-
int exitcode¶
Anteckning
Internt använder Python makron som sätter PyStatus.func, medan funktioner för att skapa en status sätter func till NULL.
Exempel:
PyStatus alloc(void **ptr, size_t size)
{
*ptr = PyMem_RawMalloc(size);
om (*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 som används för att förinitialisera Python.
Funktion för att initiera en förkonfiguration:
-
void PyPreConfig_InitPythonConfig(PyPreConfig *preconfig)¶
Initiera förkonfigurationen med Python Configuration.
-
void PyPreConfig_InitIsolatedConfig(PyPreConfig *preconfig)¶
Initiera förkonfigurationen med Isolated Configuration.
Strukturfält:
-
int allocator¶
Namn på Pythons minnesallokatorer:
PYMEM_ALLOCATOR_NOT_SET(0): ändra inte minnesallokatorer (använd standardvärden).PYMEM_ALLOCATOR_DEFAULT(1): standard minnesallokatorer.PYMEM_ALLOCATOR_DEBUG(2): default memory allocators with debug hooks.PYMEM_ALLOCATOR_MALLOC(3): användmalloc()från C-biblioteket.PYMEM_ALLOCATOR_MALLOC_DEBUG(4): tvinga fram användning avmalloc()med debug hooks.PYMEM_ALLOCATOR_PYMALLOC(5): Python pymalloc memory allocator.PYMEM_ALLOCATOR_PYMALLOC_DEBUG(6): Python pymalloc memory allocator med debug hooks.PYMEM_ALLOCATOR_MIMALLOC(6): Användmimalloc, en snabb malloc-ersättning.PYMEM_ALLOCATOR_MIMALLOC_DEBUG(7): Användmimalloc, en snabb malloc-ersättning med debug-hooks.
PYMEM_ALLOCATOR_PYMALLOCochPYMEM_ALLOCATOR_PYMALLOC_DEBUGstöds inte om Python ärkonfigurerat med --without-pymalloc.PYMEM_ALLOCATOR_MIMALLOCochPYMEM_ALLOCATOR_MIMALLOC_DEBUGstöds inte om Python ärkonfigurerad med --without-mimalloceller om det underliggande atomära stödet inte är tillgängligt.Standard:
PYMEM_ALLOCATOR_NOT_SET.
-
int configure_locale¶
Ställ in LC_CTYPE locale till den locale som användaren föredrar.
Om lika med
0, sätt medlemmarnacoerce_c_localeochcoerce_c_locale_warntill0.Se locale encoding.
Standard:
1i Python-konfiguration,0i isolerad konfiguration.
-
int coerce_c_locale¶
Om lika med
2, tvinga fram C locale.Om lika med
1, läs LC_CTYPE locale för att avgöra om den ska tvingas.Se locale encoding.
Standard:
\-1i Python-konfiguration,0i isolerad konfiguration.
-
int coerce_c_locale_warn¶
Om ej noll, avge en varning om C-landets språk är tvingat.
Standard:
\-1i Python-konfiguration,0i isolerad konfiguration.
-
int dev_mode¶
Python Development Mode: se
PyConfig.dev_mode.Standard:
\-1i Python-läge,0i isolerat läge.
-
int isolated¶
Isolerat läge: se
PyConfig.isolated.Standard:
0i Python-läge,1i isolerat läge.
-
int legacy_windows_fs_encoding¶
Om ej noll:
Sätt
PyPreConfig.utf8_modetill0,Sätt
PyConfig.filesystem_encodingtill"mbcs",Sätt
PyConfig.filesystem_errorstill"replace".
Initialiseras från miljövariabelns värde
PYTHONLEGACYWINDOWSFSENCODING.Endast tillgängligt på Windows. makrot
#ifdef MS_WINDOWSkan användas för Windows-specifik kod.Standard:
0.
-
int parse_argv¶
Om icke-noll, analyserar
Py_PreInitializeFromArgs()ochPy_PreInitializeFromBytesArgs()sinaargvargument på samma sätt som vanliga Python analyserar kommandoradsargument: se Command Line Arguments.Standard:
1i Python-konfiguration,0i isolerad konfiguration.
-
int use_environment¶
Använda miljövariabler? Se
PyConfig.use_environment.Standard:
1i Python-konfiguration och0i isolerad konfiguration.
-
int utf8_mode¶
Om värdet är annat än noll aktiveras Python UTF-8 Mode.
Sätts till
0eller1med kommandoradsalternativet-X utf8och miljövariabelnPYTHONUTF8.Sätts också till
1omLC_CTYPElocale ärCellerPOSIX.Standard:
\-1i Python-konfiguration och0i isolerad konfiguration.
-
void PyPreConfig_InitPythonConfig(PyPreConfig *preconfig)¶
Förinitiera Python med PyPreConfig¶
Förinitialisering av Python:
Ange Pythons minnesallokatorer (
PyPreConfig.allocator)Konfigurera LC_CTYPE-locale (locale encoding)
Ställ in Python UTF-8 Mode (
PyPreConfig.utf8_mode)
Den aktuella förkonfigurationen (av typen PyPreConfig) lagras i _PyRuntime.preconfig.
Funktioner för att förinitialisera Python:
-
PyStatus Py_PreInitialize(const PyPreConfig *preconfig)¶
Förinitiera Python från preconfig preconfiguration.
preconfig får inte vara
NULL.
-
PyStatus Py_PreInitializeFromBytesArgs(const PyPreConfig *preconfig, int argc, char *const *argv)¶
Förinitiera Python från preconfig preconfiguration.
Analysera argv kommandoradsargument (bytessträngar) om
parse_argvi preconfig är ung.preconfig får inte vara
NULL.
-
PyStatus Py_PreInitializeFromArgs(const PyPreConfig *preconfig, int argc, wchar_t *const *argv)¶
Förinitiera Python från preconfig preconfiguration.
Analysera argv kommandoradsargument (breda strängar) om
parse_argvi preconfig är ung.preconfig får inte vara
NULL.
Anroparen ansvarar för att hantera undantag (error eller exit) med hjälp av PyStatus_Exception() och Py_ExitStatusException().
För Python Configuration (PyPreConfig_InitPythonConfig()), om Python initieras med kommandoradsargument, måste kommandoradsargumenten också skickas för att förinitialisera Python, eftersom de har en effekt på förkonfigurationen som kodningar. Till exempel aktiverar -X utf8 kommandoradsalternativet Python UTF-8 Mode.
PyMem_SetAllocator() kan anropas efter Py_PreInitialize() och före Py_InitializeFromConfig() för att installera en anpassad minnesallokator. Den kan anropas före Py_PreInitialize() om PyPreConfig.allocator är satt till PYMEM_ALLOCATOR_NOT_SET.
Python-minnesallokeringsfunktioner som PyMem_RawMalloc() får inte användas före Pythons förinitialisering, medan det alltid är säkert att anropa malloc() och free() direkt. Py_DecodeLocale() får inte anropas före Pythons förinitialisering.
Exempel på användning av förinitialisering för att aktivera Python UTF-8 Mode:
PyStatus status;
PyPreConfig preconfig;
PyPreConfig_InitPythonConfig(&preconfig);
preconfig.utf8_mode = 1;
status = Py_PreInitialize(&preconfig);
if (PyStatus_Exception(status)) {
Py_ExitStatusException(status);
}
/* vid denna punkt talar Python UTF-8 */
Py_Initialize();
/* ... använd Python API här ... */
Py_Finalize();
PyConfig¶
-
type PyConfig¶
Struktur som innehåller de flesta parametrar för att konfigurera Python.
När detta är gjort måste funktionen
PyConfig_Clear()användas för att frigöra konfigurationsminnet.Strukturmetoder:
-
void PyConfig_InitPythonConfig(PyConfig *config)¶
Initiera konfigurationen med Python Configuration.
-
void PyConfig_InitIsolatedConfig(PyConfig *config)¶
Initiera konfigurationen med Isolated Configuration.
-
PyStatus PyConfig_SetString(PyConfig *config, wchar_t *const *config_str, const wchar_t *str)¶
Kopiera den breda teckensträngen str till
*config_str.Preinitialize Python om det behövs.
-
PyStatus PyConfig_SetBytesString(PyConfig *config, wchar_t *const *config_str, const char *str)¶
Avkoda str med
Py_DecodeLocale()och lägg in resultatet i*config_str.Preinitialize Python om det behövs.
-
PyStatus PyConfig_SetArgv(PyConfig *config, int argc, wchar_t *const *argv)¶
Ange kommandoradsargument (
argvmember of config) från listan argv med breda teckensträngar.Preinitialize Python om det behövs.
-
PyStatus PyConfig_SetBytesArgv(PyConfig *config, int argc, char *const *argv)¶
Ange kommandoradsargument (
argvmember of config) från listan argv med bytessträngar. Avkoda bytes med hjälp avPy_DecodeLocale().Preinitialize Python om det behövs.
-
PyStatus PyConfig_SetWideStringList(PyConfig *config, PyWideStringList *list, Py_ssize_t length, wchar_t **items)¶
Ställ in listan med breda strängar list till length och items.
Preinitialize Python om det behövs.
-
PyStatus PyConfig_Read(PyConfig *config)¶
Läs alla Python-konfigurationer.
Fält som redan är initialiserade lämnas oförändrade.
Fält för path configuration beräknas eller ändras inte längre vid anrop av denna funktion, från och med Python 3.11.
Funktionen
PyConfig_Read()analyserar baraPyConfig.argv-argument en gång:PyConfig.parse_argvsätts till2efter att argumenten har analyserats. Eftersom Python-argument tas bort frånPyConfig.argv, skulle analys av argument två gånger innebära att programalternativen analyseras som Python-alternativ.Preinitialize Python om det behövs.
Ändrad i version 3.10: Argumenten
PyConfig.argvanalyseras nu endast en gång,PyConfig.parse_argvsätts till2efter att argumenten har analyserats och argumenten analyseras endast omPyConfig.parse_argvär lika med1.Ändrad i version 3.11:
PyConfig_Read()beräknar inte längre alla sökvägar, och därför kan fält som listas under Python Path Configuration inte längre uppdateras förränPy_InitializeFromConfig()anropas.
De flesta
PyConfig-metoder preinitialize Python om det behövs. I så fall baseras Python-förinitialiseringskonfigurationen (PyPreConfig) påPyConfig. Om konfigurationsfält som är gemensamma medPyPreConfigjusteras måste de ställas in innan enPyConfig-metod anropas:Dessutom, om
PyConfig_SetArgv()ellerPyConfig_SetBytesArgv()används, måste denna metod anropas före andra metoder, eftersom konfigurationen före initieringen beror på kommandoradsargument (omparse_argvinte är noll).Den som anropar dessa metoder är ansvarig för att hantera undantag (fel eller exit) med hjälp av
PyStatus_Exception()ochPy_ExitStatusException().Strukturfält:
-
PyWideStringList argv¶
Ställ in
sys.argvkommandoradsargument baserat påargv. Dessa parametrar liknar de som skickas till programmets funktionmain()med skillnaden att den första posten ska referera till skriptfilen som ska köras istället för den körbara filen som är värd för Python-tolken. Om det inte finns något skript som ska köras kan den första posten iargvvara en tom sträng.Sätt
parse_argvtill1för att analyseraargvpå samma sätt som vanliga Python analyserar Python-kommandoradsargument och sedan ta bort Python-argument frånargv.Om
argvär tom, läggs en tom sträng till för att säkerställa attsys.argvalltid existerar och aldrig är tom.Standard:
NULL.Se även
orig_argv-medlemmen.
-
int safe_path¶
Om den är lika med noll, lägger
Py_RunMain()till en potentiellt osäker sökväg tillsys.pathvid uppstart:Om
argv[0]är lika medL"-m"(python -m module), lägg till den aktuella arbetskatalogen.Om du kör ett skript (
python script.py), lägg till skriptets katalog. Om det är en symbolisk länk, lös symboliska länkar.I annat fall (
python -c codeochpython) läggs en tom sträng till, vilket innebär den aktuella arbetskatalogen.
Sätts till
1med kommandoradsalternativet-Poch miljövariabelnPYTHONSAFEPATH.Standard:
0i Python-konfiguration,1i isolerad konfiguration.Tillagd i version 3.11.
-
wchar_t *base_exec_prefix¶
-
Standard:
NULL.Del av Python Path Configuration utdata.
Se även
PyConfig.exec_prefix.
-
wchar_t *base_executable¶
Körbar Python-bas:
sys._base_executable.Ställs in av miljövariabeln
__PYVENV_LAUNCHER__.Ställ in från
PyConfig.executableomNULL.Standard:
NULL.Del av Python Path Configuration utdata.
Se även
PyConfig.executable.
-
wchar_t *base_prefix¶
-
Standard:
NULL.Del av Python Path Configuration utdata.
Se även
PyConfig.prefix.
-
int buffered_stdio¶
Om lika med
0ochconfigure_c_stdioär icke-noll, inaktivera buffring på C-strömmarna stdout och stderr.Sätts till
0med kommandoradsalternativet-uoch miljövariabelnPYTHONUNBUFFERED.stdin öppnas alltid i buffrat läge.
Standard:
1.
-
int bytes_warning¶
Om lika med
1, utfärda en varning när du jämförbytesellerbytearraymedstr, eller jämförbytesmedint.Om lika med eller större än
2, skapa ettBytesWarningundantag i dessa fall.Ökas med kommandoradsalternativet
-b.Standard:
0.
-
int warn_default_encoding¶
Om ung, avge en
EncodingWarning-varning närio.TextIOWrapperanvänder sin standardkodning. Se Opt-in-kodningVarning för detaljer.Standard:
0.Tillagd i version 3.10.
-
int code_debug_ranges¶
Om lika med
0, inaktiveras inkludering av slutrad och kolumnmappningar i kodobjekt. Inaktiverar också spårningsutskrift av carets till specifika felplatser.Sätts till
0av miljövariabelnPYTHONNODEBUGRANGESoch av kommandoradsalternativet-X no_debug_ranges.Standard:
1.Tillagd i version 3.11.
-
wchar_t *check_hash_pycs_mode¶
Kontrollera valideringsbeteendet för hash-baserade
.pyc-filer: värdet av kommandoradsalternativet--check-hash-based-pycs.Giltiga värden:
L"always": Hashar källfilen för ogiltigförklaring oavsett värdet på flaggan ”check_source”.L"never": Anta att hash-baserade pycs alltid är giltiga.L"default": Flaggan ”check_source” i hash-baserade pycs avgör ogiltighet.
Standard:
L"default".Se även PEP 552 ”Deterministic pycs”.
-
int configure_c_stdio¶
Om ej noll, konfigurera C-standardströmmar:
I Windows ställer du in binärt läge (
O_BINARY) på stdin, stdout och stderr.Om
buffered_stdioär lika med noll, inaktiveras buffring av strömmarna stdin, stdout och stderr.Om
interactiveinte är noll, aktivera strömbuffring på stdin och stdout (endast stdout på Windows).
Standard:
1i Python-konfiguration,0i isolerad konfiguration.
-
int dev_mode¶
Om värdet är annat än noll aktiveras Python Development Mode.
Sätts till
1med alternativet-X devoch miljövariabelnPYTHONDEVMODE.Standard:
\-1i Python-läge,0i isolerat läge.
-
int dump_refs¶
Dumpa Python-referenser?
Om värdet inte är noll, dumpas alla objekt som fortfarande lever vid avslut.
Sätts till
1av miljövariabelnPYTHONDUMPREFS.Kräver en specialversion av Python med makrot
Py_TRACE_REFSdefinierat: seconfigure --with-trace-refs option.Standard:
0.
-
wchar_t *dump_refs_file¶
Filnamn där Python-referenser ska dumpas.
Ställs in av miljövariabeln
PYTHONDUMPREFSFILE.Standard:
NULL.Tillagd i version 3.11.
-
wchar_t *exec_prefix¶
Det platsspecifika katalogprefixet där de plattformsberoende Python-filerna installeras:
sys.exec_prefix.Standard:
NULL.Del av Python Path Configuration utdata.
Se även
PyConfig.base_exec_prefix.
-
wchar_t *executable¶
Den absoluta sökvägen till den körbara binärfilen för Python-tolken:
sys.executable.Standard:
NULL.Del av Python Path Configuration utdata.
Se även
PyConfig.base_executable.
-
int faulthandler¶
Aktivera Faulthandler?
Om ej noll, anropa
faulthandler.enable()vid uppstart.Sätts till
1av-X faulthandleroch miljövariabelnPYTHONFAULTHANDLER.Standard:
\-1i Python-läge,0i isolerat läge.
-
wchar_t *filesystem_encoding¶
Filsystemskodning:
sys.getfilesystemencoding().På macOS, Android och VxWorks: använd
"utf-8"som standard.På Windows: använd
"utf-8"som standard, eller"mbcs"omlegacy_windows_fs_encodingavPyPreConfigär icke-noll.Standardkodning på andra plattformar:
"utf-8"omPyPreConfig.utf8_modeinte är noll."ascii"om Python upptäcker attnl_langinfo(CODESET)meddelar ASCII-kodning, medan funktionenmbstowcs()avkodar från en annan kodning (vanligtvis Latin1)."utf-8"omnl_langinfo(CODESET)returnerar en tom sträng.Annars används locale encoding:
nl_langinfo(CODESET)resultat.
Vid Python-start normaliseras kodningsnamnet till Python-codec-namnet. Till exempel ersätts
"ANSI_X3.4-1968"med"ascii".Se även
filesystem_errorsmember.
-
wchar_t *filesystem_errors¶
Filsystemsfelhanterare:
sys.getfilesystemencodeerrors().På Windows: använd
"surrogatepass"som standard, eller"replace"omlegacy_windows_fs_encodingavPyPreConfiginte är noll.På andra plattformar: använd
"surrogateescape"som standard.Felhanterare som stöds:
"strict""surrogateescape""surrogatepass"(stöds endast med UTF-8-kodning)
Se även medlemmen
filesystem_encoding.
-
int use_frozen_modules¶
Om värdet är annat än noll, använd frysta moduler.
Ställs in av miljövariabeln
PYTHON_FROZEN_MODULES.Standard:
1i en release-byggnad, eller0i en debug-byggnad.
-
unsigned long hash_seed¶
-
int use_hash_seed¶
Slumpmässigt utsäde för hashfunktion.
Om
use_hash_seedär noll, väljs ett frö slumpmässigt vid Python-start ochhash_seedignoreras.Ställs in av miljövariabeln
PYTHONHASHSEED.Standardvärde för use_hash_seed:
\-1i Python-läge,0i isolerat läge.
-
wchar_t *home¶
Ange standardkatalogen för Python, det vill säga platsen där Pythons standardbibliotek finns (se
PYTHONHOME).Ställs in av miljövariabeln
PYTHONHOME.Standard:
NULL.Del av Python Path Configuration inmatning.
-
int import_time¶
Om
1, profilera importtiden. Om2, inkludera ytterligare utdata som indikerar när en importerad modul redan har laddats.Ställs in med alternativet
-X importtimeoch miljövariabelnPYTHONPROFILEIMPORTTIME.Standard:
0.Ändrad i version 3.14: Lagt till stöd för
import_time = 2
-
int inspect¶
Gå till interaktivt läge efter att du har kört ett skript eller ett kommando.
Om större än
0, aktivera inspect: när ett skript skickas som första argument eller alternativet -c används, gå till interaktivt läge efter att skriptet eller kommandot har exekverats, även omsys.stdininte verkar vara en terminal.Ökas med kommandoradsalternativet
-i. Sätts till1om miljövariabelnPYTHONINSPECTinte är tom.Standard:
0.
-
int install_signal_handlers¶
Installera Python-signalhanterare?
Standard:
1i Python-läge,0i isolerat läge.
-
int interactive¶
Om större än
0, aktivera det interaktiva läget (REPL).Ökas med kommandoradsalternativet
-i.Standard:
0.
-
int int_max_str_digits¶
Konfigurerar Längdsbegränsning för konvertering av heltalssträngar. Ett initialt värde på
\-1innebär att värdet hämtas från kommandoraden eller miljön eller annars är standardvärdet 4300 (sys.int_info.default_max_str_digits). Ett värde på0inaktiverar begränsningen. Värden som är större än noll men mindre än 640 (sys.int_info.str_digits_check_threshold) stöds inte och leder till ett fel.Konfigureras av kommandoradsflaggan
-X int_max_str_digitseller miljövariabelnPYTHONINTMAXSTRDIGITS.Standard:
\-1i Python-läge. 4300 (sys.int_info.default_max_str_digits) i isolerat läge.Tillagd i version 3.12.
-
int cpu_count¶
Om värdet för
cpu_countinte är\-1så kommer det att åsidosätta returvärdena föros.cpu_count(),os.process_cpu_count(), ochmultiprocessing.cpu_count().Konfigureras av kommandoradsflaggan
-X cpu_count=n|defaulteller miljövariabelnPYTHON_CPU_COUNT.Standard:
\-1.Tillagd i version 3.13.
-
int isolated¶
Om större än
0, aktivera isolerat läge:Sätt
safe_pathtill1: lägg inte till en potentiellt osäker sökväg tillsys.pathvid Python-start, t.ex. den aktuella katalogen, skriptets katalog eller en tom sträng.Sätt
use_environmenttill0: ignoreraPYTHONmiljövariabler.Sätt
user_site_directorytill0: lägg inte till användarkatalogen isys.path.Python REPL importerar inte
readlineeller aktiverar standardkonfiguration för readline på interaktiva prompter.
Sätts till
1med kommandoradsalternativet-I.Standard:
0i Python-läge,1i isolerat läge.Se även Isolated Configuration och
PyPreConfig.isolated.
-
int legacy_windows_stdio¶
Om den inte är noll, använd
io.FileIOistället förio._WindowsConsoleIOförsys.stdin,sys.stdoutochsys.stderr.Sätts till
1om miljövariabelnPYTHONLEGACYWINDOWSSTDIOär satt till en icke-tom sträng.Endast tillgängligt på Windows. makrot
#ifdef MS_WINDOWSkan användas för Windows-specifik kod.Standard:
0.Se även PEP 528 (Ändra Windows-konsolens kodning till UTF-8).
-
int malloc_stats¶
Om ej noll, dumpa statistik på Python pymalloc memory allocator vid avslut.
Sätts till
1av miljövariabelnPYTHONMALLOCSTATS.Alternativet ignoreras om Python är
konfigurerad med alternativet --without-pymalloc.Standard:
0.
-
wchar_t *platlibdir¶
Katalognamn för plattformsbibliotek:
sys.platlibdir.Ställs in av miljövariabeln
PYTHONPLATLIBDIR.Standard: värdet på makrot
PLATLIBDIRsom anges avconfigure --with-platlibdir option(standard:"lib", eller"DLLs"på Windows).Del av Python Path Configuration inmatning.
Tillagd i version 3.9.
Ändrad i version 3.11: Detta makro används nu i Windows för att lokalisera standardbibliotekets tilläggsmoduler, vanligtvis under
DLLs. Av kompatibilitetsskäl bör du dock notera att detta värde ignoreras för alla icke-standardiserade layouter, inklusive in-tree builds och virtuella miljöer.
-
wchar_t *pythonpath_env¶
Sökvägar för modul (
sys.path) som en sträng separerad medDELIM(os.pathsep).Ställs in av miljövariabeln
PYTHONPATH.Standard:
NULL.Del av Python Path Configuration inmatning.
-
PyWideStringList module_search_paths¶
-
int module_search_paths_set¶
Sökvägar för modul:
sys.path.Om
module_search_paths_setär lika med0, kommerPy_InitializeFromConfig()att ersättamodule_search_pathsoch sättermodule_search_paths_settill1.Standard: tom lista (
module_search_paths) och0(module_search_paths_set).Del av Python Path Configuration utdata.
-
int optimization_level¶
Nivå för kompileringsoptimering:
0: Peephole optimizer, ställ in__debug__tillTrue.1: Nivå 0, ta bort påståenden, sätt__debug__tillFalse.2: Nivå 1, remsa docstrings.
Ökas med kommandoradsalternativet
-O. Sätts till värdet för miljövariabelnPYTHONOPTIMIZE.Standard:
0.
-
PyWideStringList orig_argv¶
Listan över de ursprungliga kommandoradsargumenten som skickades till Python-körprogrammet:
sys.orig_argv.Om listan
orig_argvär tom ochargvinte är en lista som bara innehåller en tom sträng, kopierarPyConfig_Read()argvtillorig_argvinnan den modifierarargv(omparse_argvinte är noll).Se även medlemmen
argvoch funktionenPy_GetArgcArgv().Standard: tom lista.
Tillagd i version 3.10.
-
int parse_argv¶
Analysera kommandoradsargument?
Om lika med
1, analyserasargvpå samma sätt som vanliga Python analyserar kommandoradsargument, och Python-argument tas bort frånargv.Funktionen
PyConfig_Read()analyserar baraPyConfig.argv-argument en gång:PyConfig.parse_argvsätts till2efter att argumenten har analyserats. Eftersom Python-argument tas bort frånPyConfig.argv, skulle analys av argument två gånger innebära att programalternativen analyseras som Python-alternativ.Standard:
1i Python-läge,0i isolerat läge.Ändrad i version 3.10: Argumenten i
PyConfig.argvanalyseras nu endast omPyConfig.parse_argvär lika med1.
-
int parser_debug¶
Felsökningsläge för parser. Om större än
0, aktivera felsökningsutmatning för parser (endast för experter, beroende på kompileringsalternativ).Ökas med kommandoradsalternativet
-d. Sätts till värdet för miljövariabelnPYTHONDEBUG.Kräver en debug-version av Python (makrot
Py_DEBUGmåste vara definierat).Standard:
0.
-
int pathconfig_warnings¶
Om ej noll, tillåts beräkning av sökvägskonfiguration att logga varningar i
stderr. Om lika med0, undertrycks dessa varningar.Standard:
1i Python-läge,0i isolerat läge.Del av Python Path Configuration inmatning.
Ändrad i version 3.11: Gäller nu även på Windows.
-
wchar_t *prefix¶
Det platsspecifika katalogprefixet där de plattformsoberoende Python-filerna installeras:
sys.prefix.Standard:
NULL.Del av Python Path Configuration utdata.
Se även
PyConfig.base_prefix.
-
wchar_t *program_name¶
Programnamn som används för att initiera
executableoch i tidiga felmeddelanden under Python-initialisering.På macOS, använd
PYTHONEXECUTABLEmiljövariabel om den är inställd.Om makrot
WITH_NEXT_FRAMEWORKär definierat, använd__PYVENV_LAUNCHER__miljövariabel om den är inställd.Använd
argv[0]iargvom den finns tillgänglig och inte är tom.Annars använder du
L"python"på Windows, ellerL"python3"på andra plattformar.
Standard:
NULL.Del av Python Path Configuration inmatning.
-
wchar_t *pycache_prefix¶
Katalog där cachade
.pyc-filer skrivs:sys.pycache_prefix.Ställs in med kommandoradsalternativet
-X pycache_prefix=PATHoch miljövariabelnPYTHONPYCACHEPREFIX. Kommandoradsalternativet har företräde.Om
NULL, sättssys.pycache_prefixtillNone.Standard:
NULL.
-
int quiet¶
Tyst läge. Om större än
0, visa inte copyright och version vid Python-start i interaktivt läge.Ökas med kommandoradsalternativet
-q.Standard:
0.
-
wchar_t *run_command¶
Värde för kommandoradsalternativet
-c.Används av
Py_RunMain().Standard:
NULL.
-
wchar_t *run_filename¶
Filnamn som skickas på kommandoraden: efterföljande argument på kommandoraden utan
-celler-m. Den används av funktionenPy_RunMain().Den ställs till exempel in på
cript.pymed kommandoradenpython3 script.py arg.Se även alternativet
PyConfig.skip_source_first_line.Standard:
NULL.
-
wchar_t *run_module¶
Värde för kommandoradsalternativet
-m.Används av
Py_RunMain().Standard:
NULL.
-
wchar_t *run_presite¶
package.modulesökväg till modul som ska importeras innansite.pykörs.Ställs in med kommandoradsalternativet
-X presite=package.moduleoch miljövariabelnPYTHON_PRESITE. Kommandoradsalternativet har företräde.Kräver en debug-version av Python (makrot
Py_DEBUGmåste vara definierat).Standard:
NULL.
-
int show_ref_count¶
Visa totalt antal referenser vid utgången (exklusive immortal-objekt)?
Sätts till
1av-X showrefcountkommandoradsalternativ.Kräver en debug-byggnad av Python (makrot
Py_REF_DEBUGmåste vara definierat).Standard:
0.
-
int site_import¶
Importera modulen
sitevid uppstart?Om värdet är noll inaktiveras importen av modulens webbplats och de webbplatsberoende manipulationerna av
sys.pathsom den medför.Inaktivera även dessa manipulationer om modulen
siteuttryckligen importeras senare (anropasite.main()om du vill att de ska utlösas).Sätts till
0med kommandoradsalternativet-S.sys.flags.no_siteär satt till det inverterade värdet avsite_import.Standard:
1.
-
int skip_source_first_line¶
Om värdet är annat än noll, hoppa över första raden i källan
PyConfig.run_filename.Det gör det möjligt att använda icke-Unix-former av
#!cmd. Detta är endast avsett för ett DOS-specifikt hack.Sätts till
1med kommandoradsalternativet-x.Standard:
0.
-
wchar_t *stdio_encoding¶
-
wchar_t *stdio_errors¶
Kodnings- och kodningsfel i
sys.stdin,sys.stdoutochsys.stderr(mensys.stderranvänder alltid felhanteraren"backslashreplace").Använd miljövariabeln
PYTHONIOENCODINGom den inte är tom.Standardkodning:
"UTF-8"omPyPreConfig.utf8_modeinte är noll.I annat fall används locale encoding.
Standard felhanterare:
I Windows: använd
"surrogateescape"."surrogateescape"omPyPreConfig.utf8_modeär icke-noll, eller om LC_CTYPE locale är ”C” eller ”POSIX”."strict"annars.
Se även
PyConfig.legacy_windows_stdio.
-
int tracemalloc¶
Aktivera tracemalloc?
Om ej noll, anropa
tracemalloc.start()vid uppstart.Ställs in av
-X tracemalloc=Nkommandoradsalternativ och av miljövariabelnPYTHONTRACEMALLOC.Standard:
\-1i Python-läge,0i isolerat läge.
-
int perf_profiling¶
Aktivera stöd för Linux-profiler
perf?Om lika med
1, aktiveras stöd för Linux-profilerarenperf.Om lika med
2, aktivera stöd för Linuxperfprofiler med DWARF JIT-stöd.Sätts till
1av-X perfkommandoradsalternativ och miljövariabelnPYTHONPERFSUPPORT.Sätts till
2med kommandoradsalternativet-X perf_jitoch miljövariabelnPYTHON_PERF_JIT_SUPPORT.Standard:
\-1.Se även
Se Python-stöd för Linux-profileraren perf för mer information.
Tillagd i version 3.12.
-
wchar_t *stdlib_dir¶
Katalog över Pythons standardbibliotek.
Standard:
NULL.Tillagd i version 3.11.
-
int use_environment¶
Använd miljövariabler?
Om den är lika med noll ignoreras miljövariabler.
Sätts till
0av miljövariabeln-E.Standard:
1i Python-konfiguration och0i isolerad konfiguration.
-
int use_system_logger¶
Om värdet inte är noll kommer
stdoutochstderratt omdirigeras till systemloggen.Endast tillgängligt på macOS 10.12 och senare, och på iOS.
Standard:
0(använd inte systemloggen) på macOS;1på iOS (använd systemloggen).Tillagd i version 3.14.
-
int user_site_directory¶
Om värdet är annat än noll läggs användarens webbplatskatalog till i
sys.path.Sätts till
0med kommandoradsalternativen-soch-I.Sätts till
0av miljövariabelnPYTHONNOUSERSITE.Standard:
1i Python-läge,0i isolerat läge.
-
int verbose¶
Verbose-läge. Om större än
0, skriv ut ett meddelande varje gång en modul importeras, som visar platsen (filnamn eller inbyggd modul) från vilken den laddas.Om större än eller lika med
2, skrivs ett meddelande ut för varje fil som kontrolleras vid sökning efter en modul. Ger också information om modulrensning vid avslutning.Ökas med kommandoradsalternativet
-v.Ställs in av värdet för miljövariabeln
PYTHONVERBOSE.Standard:
0.
-
PyWideStringList warnoptions¶
Alternativ för modulen
warningsför att bygga varningsfilter, från lägsta till högsta prioritet:sys.warnoptions.Modulen
warningslägger tillsys.warnoptionsi omvänd ordning: det sistaPyConfig.warnoptions-objektet blir det första objektet iwarnings.filterssom kontrolleras först (högsta prioritet).Kommandoradsalternativet
-Wlägger till sitt värde iwarnoptions, det kan användas flera gånger.Miljövariabeln
PYTHONWARNINGSkan också användas för att lägga till varningsalternativ. Flera alternativ kan anges, åtskilda med kommatecken (,).Standard: tom lista.
-
int write_bytecode¶
Om lika med
0, kommer Python inte att försöka skriva.pyc-filer vid import av källmoduler.Sätts till
0med kommandoradsalternativet-Boch miljövariabelnPYTHONDONTWRITEBYTECODE.sys.dont_write_bytecodeinitialiseras till det inverterade värdet avwrite_bytecode.Standard:
1.
-
PyWideStringList xoptions¶
Värden för kommandoradsalternativen
-X:sys._xoptions.Standard: tom lista.
-
int _pystats¶
Om ej noll, skriv prestandastatistik när Python avslutas.
Behöver en speciell konstruktion med makrot
Py_STATS: se--enable-pystats.Standard:
0.
-
void PyConfig_InitPythonConfig(PyConfig *config)¶
Om parse_argv inte är noll, analyseras argv-argument på samma sätt som vanliga Python analyserar kommandoradsargument, och Python-argument tas bort från argv.
Alternativen xoptions analyseras för att ange andra alternativ: se kommandoradsalternativet -X.
Ändrad i version 3.9: Fältet show_alloc_count har tagits bort.
Initialisering med PyConfig¶
Initialisering av tolken från en ifylld konfigurationsstruktur hanteras genom att anropa Py_InitializeFromConfig().
Anroparen ansvarar för att hantera undantag (error eller exit) med hjälp av PyStatus_Exception() och Py_ExitStatusException().
Om PyImport_FrozenModules(), PyImport_AppendInittab() eller PyImport_ExtendInittab() används, måste de anges eller anropas efter Pythons förinitialisering och före Pythons initialisering. Om Python initialiseras flera gånger måste PyImport_AppendInittab() eller PyImport_ExtendInittab() anropas före varje Python-initialisering.
Den aktuella konfigurationen (av typen PyConfig) lagras i PyInterpreterState.config.
Exempel på inställning av programnamn:
void init_python(void)
{
PyStatus status;
PyConfig config;
PyConfig_InitPythonConfig(&config);
/* Ställ in programnamnet. Förinitialisera Python implicit. */
status = PyConfig_SetString(&config, &config.program_name,
L"/stig/till/mitt_program");
if (PyStatus_Exception(status)) {
goto undantag;
}
status = Py_InitializeFromConfig(&config);
if (PyStatus_Exception(status)) {
gå till undantaget;
}
PyConfig_Clear(&config);
returnera;
undantag:
PyConfig_Clear(&config);
Py_ExitStatusException(status);
}
Ett mer komplett exempel på hur man ändrar standardkonfigurationen, läser konfigurationen och sedan åsidosätter vissa parametrar. Observera att sedan 3.11 beräknas många parametrar inte förrän vid initialiseringen, och därför kan värdena inte läsas från konfigurationsstrukturen. Alla värden som ställts in innan initialize anropas kommer att lämnas oförändrade av initialization:
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;
}
Isolerad konfiguration¶
funktionerna PyPreConfig_InitIsolatedConfig() och PyConfig_InitIsolatedConfig() skapar en konfiguration för att isolera Python från systemet. Till exempel för att bädda in Python i en applikation.
Denna konfiguration ignorerar globala konfigurationsvariabler, miljövariabler, kommandoradsargument (PyConfig.argv tolkas inte) och användarens webbplatskatalog. C-standardströmmarna (t.ex. stdout) och LC_CTYPE-lokalen lämnas oförändrade. Signalhanterare är inte installerade.
Konfigurationsfiler används fortfarande med den här konfigurationen för att bestämma sökvägar som inte är specificerade. Se till att PyConfig.home anges för att undvika att beräkna standardsökvägskonfigurationen.
Python-konfiguration¶
funktionerna PyPreConfig_InitPythonConfig() och PyConfig_InitPythonConfig() skapar en konfiguration för att bygga ett anpassat Python som beter sig som det vanliga Python.
Miljövariabler och kommandoradsargument används för att konfigurera Python, medan globala konfigurationsvariabler ignoreras.
Denna funktion aktiverar C locale coercion (PEP 538) och Python UTF-8 Mode (PEP 540) beroende på LC_CTYPE locale, PYTHONUTF8 och PYTHONCOERCECLOCALE miljövariabler.
Konfiguration av Python-sökväg¶
PyConfig innehåller flera fält för sökvägskonfigurationen:
Ingångar för konfiguration av sökväg:
PyConfig.program_namnaktuell arbetskatalog: för att få absoluta sökvägar
PATHmiljövariabel för att få den fullständiga sökvägen till programmet (frånPyConfig.program_name)miljövariabeln
PYVENV_LAUNCHER__(Endast Windows) Programsökvägar i registret under ”SoftwarePythonPythonCoreX.YPythonPath” i HKEY_CURRENT_USER och HKEY_LOCAL_MACHINE (där X.Y är Python-versionen).
Utmatningsfält för konfiguration av sökväg:
Om minst ett ”utdatafält” inte är inställt, beräknar Python sökvägskonfigurationen för att fylla oinställda fält. Om module_search_paths_set är lika med 0, åsidosätts module_search_paths och module_search_paths_set sätts till 1.
Det är möjligt att helt ignorera funktionen som beräknar standardsökvägskonfigurationen genom att uttryckligen ange alla utdatafält för sökvägskonfigurationen som anges ovan. En sträng anses vara inställd även om den inte är tom. module_search_paths betraktas som set om module_search_paths_set är satt till 1. I detta fall kommer module_search_paths att användas utan modifiering.
Sätt pathconfig_warnings till 0 för att undertrycka varningar vid beräkning av sökvägskonfigurationen (endast Unix, Windows loggar inte någon varning).
Om fälten base_prefix eller base_exec_prefix inte har angetts ärver de sina värden från prefix respektive exec_prefix.
Py_RunMain() och Py_Main() modifierar sys.path:
Om
run_filenameär inställd och är en katalog som innehåller ett__main__.py-skript, prependrun_filenametillsys.path.Om
isolatedär noll:Om
run_moduleär inställd, lägg till den aktuella katalogen isys.path. Gör ingenting om den aktuella katalogen inte kan läsas.Om
run_filenameär inställt, lägg till katalogen för filnamnet isys.path.I annat fall läggs en tom sträng till
sys.path.
Om site_import inte är noll, kan sys.path ändras av modulen site. Om user_site_directory inte är noll och användarens katalog för site-paketet finns, lägger modulen site till användarens katalog för site-paketet till sys.path.
Följande konfigurationsfiler används av sökvägskonfigurationen:
pyvenv.cfgfilen
._pth(t.ex.python._pth)pybuilddir.txt(endast Unix)
Om en ._pth -fil finns:
Sätt
isolatedtill1.Sätt
use_environmenttill0.Ställ in
site_importtill0.Sätt
safe_pathtill1.
Om home inte är inställd och en pyvenv.cfg -fil finns i samma katalog som executable, eller dess överordnade, kommer prefix och exec_prefix att ställas in på den platsen. När detta händer behåller base_prefix och base_exec_prefix fortfarande sina värden och pekar på basinstallationen. Se Virtuella miljöer för mer information.
Miljövariabeln __PYVENV_LAUNCHER__ används för att ställa in PyConfig.base_executable.
Ändrad i version 3.14: prefix, och exec_prefix, är nu inställda på katalogen pyvenv.cfg. Detta gjordes tidigare av site, och påverkas därför av -S.
Py_GetArgcArgv()¶
-
void Py_GetArgcArgv(int *argc, wchar_t ***argv)¶
Hämta de ursprungliga kommandoradsargumenten, innan Python ändrade dem.
Se även
PyConfig.orig_argvmember.
Fördröjning av exekvering av huvudmodul¶
I vissa inbäddningsfall kan det vara önskvärt att skilja initialiseringen av tolken från exekveringen av huvudmodulen.
Denna separation kan uppnås genom att sätta PyConfig.run_command till den tomma strängen under initialiseringen (för att förhindra att tolken hamnar i den interaktiva prompten) och sedan köra den önskade huvudmodulskoden med __main__.__dict__ som globalt namnrymd.