mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
gh-110722: Add PYTHON_PRESITE to import a module before site.py is run (#110769)
This commit is contained in:
parent
ab08ff7882
commit
84b7e9e3fa
8 changed files with 178 additions and 7 deletions
|
@ -1076,6 +1076,38 @@ pyinit_main_reconfigure(PyThreadState *tstate)
|
|||
}
|
||||
|
||||
|
||||
#ifdef Py_DEBUG
|
||||
static void
|
||||
run_presite(PyThreadState *tstate)
|
||||
{
|
||||
PyInterpreterState *interp = tstate->interp;
|
||||
const PyConfig *config = _PyInterpreterState_GetConfig(interp);
|
||||
|
||||
if (!config->run_presite) {
|
||||
return;
|
||||
}
|
||||
|
||||
PyObject *presite_modname = PyUnicode_FromWideChar(
|
||||
config->run_presite,
|
||||
wcslen(config->run_presite)
|
||||
);
|
||||
if (presite_modname == NULL) {
|
||||
fprintf(stderr, "Could not convert pre-site module name to unicode\n");
|
||||
Py_DECREF(presite_modname);
|
||||
}
|
||||
else {
|
||||
PyObject *presite = PyImport_Import(presite_modname);
|
||||
if (presite == NULL) {
|
||||
fprintf(stderr, "pre-site import failed:\n");
|
||||
_PyErr_Print(tstate);
|
||||
}
|
||||
Py_XDECREF(presite);
|
||||
Py_DECREF(presite_modname);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static PyStatus
|
||||
init_interp_main(PyThreadState *tstate)
|
||||
{
|
||||
|
@ -1157,6 +1189,10 @@ init_interp_main(PyThreadState *tstate)
|
|||
return status;
|
||||
}
|
||||
|
||||
#ifdef Py_DEBUG
|
||||
run_presite(tstate);
|
||||
#endif
|
||||
|
||||
status = add_main_module(interp);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue