mirror of
https://github.com/python/cpython.git
synced 2025-07-09 20:35:26 +00:00
Issue 3723: Fixed initialization of subinterpreters
The patch fixes several issues with Py_NewInterpreter as well as the demo for multiple subinterpreters. Most of the patch was written by MvL with help from Benjamin, Amaury and me. Graham Dumpleton has verified that this patch fixes an issue with mod_wsgi.
This commit is contained in:
parent
5833a2f6fd
commit
6a27efa2d3
9 changed files with 43 additions and 3 deletions
|
@ -562,8 +562,13 @@ Py_NewInterpreter(void)
|
|||
goto handle_error;
|
||||
Py_INCREF(interp->builtins);
|
||||
}
|
||||
|
||||
/* initialize builtin exceptions */
|
||||
_PyExc_Init();
|
||||
|
||||
sysmod = _PyImport_FindExtension("sys", "sys");
|
||||
if (bimod != NULL && sysmod != NULL) {
|
||||
PyObject *pstderr;
|
||||
interp->sysdict = PyModule_GetDict(sysmod);
|
||||
if (interp->sysdict == NULL)
|
||||
goto handle_error;
|
||||
|
@ -571,7 +576,18 @@ Py_NewInterpreter(void)
|
|||
PySys_SetPath(Py_GetPath());
|
||||
PyDict_SetItemString(interp->sysdict, "modules",
|
||||
interp->modules);
|
||||
/* Set up a preliminary stderr printer until we have enough
|
||||
infrastructure for the io module in place. */
|
||||
pstderr = PyFile_NewStdPrinter(fileno(stderr));
|
||||
if (pstderr == NULL)
|
||||
Py_FatalError("Py_Initialize: can't set preliminary stderr");
|
||||
PySys_SetObject("stderr", pstderr);
|
||||
PySys_SetObject("__stderr__", pstderr);
|
||||
|
||||
_PyImportHooks_Init();
|
||||
if (initstdio() < 0)
|
||||
Py_FatalError(
|
||||
"Py_Initialize: can't initialize sys standard streams");
|
||||
initmain();
|
||||
if (!Py_NoSiteFlag)
|
||||
initsite();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue