82 lines
2.1 KiB
Diff
82 lines
2.1 KiB
Diff
diff --git a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c
|
|
index de92f34c..08d99a96 100644
|
|
--- a/plugins/python/python_plugin.c
|
|
+++ b/plugins/python/python_plugin.c
|
|
@@ -233,21 +233,6 @@ void uwsgi_python_pthread_child(void) {
|
|
PyMethodDef uwsgi_spit_method[] = { {"uwsgi_spit", py_uwsgi_spit, METH_VARARGS, ""} };
|
|
PyMethodDef uwsgi_write_method[] = { {"uwsgi_write", py_uwsgi_write, METH_VARARGS, ""} };
|
|
|
|
-PyDoc_STRVAR(uwsgi_py_doc, "uWSGI api module.");
|
|
-
|
|
-#ifdef PYTHREE
|
|
-static PyModuleDef uwsgi_module3 = {
|
|
- PyModuleDef_HEAD_INIT,
|
|
- "uwsgi",
|
|
- uwsgi_py_doc,
|
|
- -1,
|
|
- NULL,
|
|
-};
|
|
-PyObject *init_uwsgi3(void) {
|
|
- return PyModule_Create(&uwsgi_module3);
|
|
-}
|
|
-#endif
|
|
-
|
|
int uwsgi_python_init() {
|
|
|
|
char *pyversion = strchr(Py_GetVersion(), '\n');
|
|
@@ -313,9 +298,6 @@ pep405:
|
|
wchar_t *pname = uwsgi_calloc(sizeof(wchar_t) * (strlen(program_name)+1));
|
|
mbstowcs(pname, program_name, strlen(program_name)+1);
|
|
Py_SetProgramName(pname);
|
|
-#ifdef UWSGI_PY312
|
|
- PyImport_AppendInittab("uwsgi", init_uwsgi3);
|
|
-#endif
|
|
#else
|
|
Py_SetProgramName(program_name);
|
|
#endif
|
|
@@ -678,6 +660,21 @@ next:
|
|
|
|
|
|
|
|
+PyDoc_STRVAR(uwsgi_py_doc, "uWSGI api module.");
|
|
+
|
|
+#ifdef PYTHREE
|
|
+static PyModuleDef uwsgi_module3 = {
|
|
+ PyModuleDef_HEAD_INIT,
|
|
+ "uwsgi",
|
|
+ uwsgi_py_doc,
|
|
+ -1,
|
|
+ NULL,
|
|
+};
|
|
+PyObject *init_uwsgi3(void) {
|
|
+ return PyModule_Create(&uwsgi_module3);
|
|
+}
|
|
+#endif
|
|
+
|
|
void init_uwsgi_embedded_module() {
|
|
PyObject *new_uwsgi_module, *zero;
|
|
int i;
|
|
@@ -698,10 +695,21 @@ void init_uwsgi_embedded_module() {
|
|
|
|
|
|
#ifdef PYTHREE
|
|
-#ifndef UWSGI_PY312
|
|
+# ifndef UWSGI_PY312
|
|
PyImport_AppendInittab("uwsgi", init_uwsgi3);
|
|
-#endif
|
|
new_uwsgi_module = PyImport_AddModule("uwsgi");
|
|
+# else
|
|
+ // From python 3.12 onwards, PyImport_AppendInittab() can no
|
|
+ // longer be called after Py_Initialize(). Instead, dynamically
|
|
+ // add the module instead
|
|
+ PyObject *sys_modules;
|
|
+ PyImport_AddModule("uwsgi");
|
|
+ new_uwsgi_module = init_uwsgi3();
|
|
+ sys_modules = PyImport_GetModuleDict();
|
|
+ PyDict_SetItemString(sys_modules, "uwsgi", new_uwsgi_module);
|
|
+ Py_DECREF(new_uwsgi_module);
|
|
+
|
|
+# endif
|
|
#else
|
|
new_uwsgi_module = Py_InitModule3("uwsgi", NULL, uwsgi_py_doc);
|
|
#endif
|