@@ -458,7 +458,7 @@ _Py_SetLocaleFromEnv(int category)
458458/* Global initializations. Can be undone by Py_Finalize(). Don't
459459 call this twice without an intervening Py_Finalize() call.
460460
461- Every call to _Py_InitializeCore , Py_Initialize or Py_InitializeEx
461+ Every call to _Py_InitializeFromConfig , Py_Initialize or Py_InitializeEx
462462 must have a corresponding call to Py_Finalize.
463463
464464 Locking: you must hold the interpreter lock while calling these APIs.
@@ -832,7 +832,7 @@ pyinit_coreconfig(_PyCoreConfig *config, const _PyCoreConfig *src_config,
832832 * to the Python C API (unless the API is explicitly listed as being
833833 * safe to call without calling Py_Initialize first)
834834 */
835- _PyInitError
835+ static _PyInitError
836836_Py_InitializeCore (const _PyCoreConfig * src_config ,
837837 PyInterpreterState * * interp_p )
838838{
@@ -981,20 +981,27 @@ _Py_InitializeMainInterpreter(PyInterpreterState *interp)
981981#undef _INIT_DEBUG_PRINT
982982
983983_PyInitError
984- _Py_InitializeFromConfig (const _PyCoreConfig * config )
984+ _Py_InitializeFromConfig (const _PyCoreConfig * config ,
985+ PyInterpreterState * * interp_p )
985986{
986987 PyInterpreterState * interp = NULL ;
987988 _PyInitError err ;
988989 err = _Py_InitializeCore (config , & interp );
989990 if (_Py_INIT_FAILED (err )) {
990991 return err ;
991992 }
993+ if (interp_p ) {
994+ * interp_p = interp ;
995+ }
992996 config = & interp -> core_config ;
993997
994- err = _Py_InitializeMainInterpreter (interp );
995- if (_Py_INIT_FAILED (err )) {
996- return err ;
998+ if (config -> _init_main ) {
999+ err = _Py_InitializeMainInterpreter (interp );
1000+ if (_Py_INIT_FAILED (err )) {
1001+ return err ;
1002+ }
9971003 }
1004+
9981005 return _Py_INIT_OK ();
9991006}
10001007
@@ -1007,13 +1014,10 @@ Py_InitializeEx(int install_sigs)
10071014 return ;
10081015 }
10091016
1010- _PyInitError err ;
10111017 _PyCoreConfig config = _PyCoreConfig_INIT ;
10121018 config .install_signal_handlers = install_sigs ;
10131019
1014- err = _Py_InitializeFromConfig (& config );
1015- _PyCoreConfig_Clear (& config );
1016-
1020+ _PyInitError err = _Py_InitializeFromConfig (& config , NULL );
10171021 if (_Py_INIT_FAILED (err )) {
10181022 _Py_ExitInitError (err );
10191023 }
0 commit comments