diff --git a/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp b/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp
index 77a109752..f7facb33a 100644
--- a/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp
+++ b/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp
@@ -258,6 +258,13 @@ void PythonContext::GlobalInit()
PyImport_AppendInittab("renderdoc", &PyInit_renderdoc);
PyImport_AppendInittab("qrenderdoc", &PyInit_qrenderdoc);
+#if PY_VERSION_HEX > 0x030B0000
+ PyConfig config;
+ PyConfig_InitPythonConfig(&config);
+ config.configure_c_stdio = 0;
+ config.parse_argv = 0;
+#endif
+
#if defined(STATIC_QRENDERDOC)
// add the location where our libs will be for statically-linked python installs
{
@@ -267,17 +274,31 @@ void PythonContext::GlobalInit()
pylibs.toWCharArray(python_home);
+#if PY_VERSION_HEX > 0x030B0000
+ config.home = python_home;
+#else
Py_SetPythonHome(python_home);
+#endif
}
#endif
+#if PY_VERSION_HEX > 0x030B0000
+ config.program_name = program_name;
+
+ config.use_environment = 0;
+
+ Py_InitializeFromConfig(&config);
+#else
Py_SetProgramName(program_name);
Py_IgnoreEnvironmentFlag = 1;
Py_Initialize();
+#endif
+#if PY_VERSION_HEX < 0x03090000
PyEval_InitThreads();
+#endif
OutputRedirectorType.tp_name = "renderdoc_output_redirector";
OutputRedirectorType.tp_basicsize = sizeof(OutputRedirector);
diff --git a/qrenderdoc/Code/pyrenderdoc/renderdoc.i b/qrenderdoc/Code/pyrenderdoc/renderdoc.i
index 97da4a1cd..d86762eed 100644
--- a/qrenderdoc/Code/pyrenderdoc/renderdoc.i
+++ b/qrenderdoc/Code/pyrenderdoc/renderdoc.i
@@ -470,9 +470,9 @@ extern "C" PyObject *RENDERDOC_DumpObject(PyObject *obj)
void *resptr = NULL;
// for basic types, return the repr directly
- if(obj == (PyObject *)&_Py_TrueStruct ||
- obj == (PyObject *)&_Py_FalseStruct ||
- PyObject_IsInstance(obj, (PyObject*)&_PyNone_Type) ||
+ if(obj == Py_True ||
+ obj == Py_False ||
+ obj == Py_None ||
PyObject_IsInstance(obj, (PyObject*)&PyFloat_Type) ||
PyObject_IsInstance(obj, (PyObject*)&PyLong_Type) ||
PyObject_IsInstance(obj, (PyObject*)&PyBytes_Type) ||