Use PyInitConfig API in _freeze_module.c (#137423)

This commit is contained in:
Victor Stinner
2025-08-06 14:34:56 +02:00
committed by GitHub
parent 3a79a12262
commit c17f378c0e

View File

@@ -45,27 +45,40 @@ static const char header[] =
static void
runtime_init(void)
{
PyConfig config;
PyConfig_InitIsolatedConfig(&config);
PyInitConfig *config = PyInitConfig_Create();
if (config == NULL) {
printf("memory allocation failed\n");
exit(1);
}
config.site_import = 0;
PyStatus status;
status = PyConfig_SetString(&config, &config.program_name,
L"./_freeze_module");
if (PyStatus_Exception(status)) {
PyConfig_Clear(&config);
Py_ExitStatusException(status);
if (PyInitConfig_SetInt(config, "site_import", 0) < 0) {
goto error;
}
if (PyInitConfig_SetStr(config, "program_name", "./_freeze_module") < 0) {
goto error;
}
/* Don't install importlib, since it could execute outdated bytecode. */
config._install_importlib = 0;
config._init_main = 0;
if (PyInitConfig_SetInt(config, "_install_importlib", 0) < 0) {
goto error;
}
if (PyInitConfig_SetInt(config, "_init_main", 0) < 0) {
goto error;
}
status = Py_InitializeFromConfig(&config);
PyConfig_Clear(&config);
if (PyStatus_Exception(status)) {
Py_ExitStatusException(status);
if (Py_InitializeFromInitConfig(config) < 0) {
goto error;
}
PyInitConfig_Free(config);
return;
error:
{
const char *err_msg;
(void)PyInitConfig_GetError(config, &err_msg);
printf("Python init error: %s\n", err_msg);
PyInitConfig_Free(config);
exit(1);
}
}