python: fix Py_SetPythonHome deprecated API for newer versions

This commit is contained in:
r3yc0n1c 2024-03-24 16:07:45 +05:30
parent f8c7df8260
commit 9d927c6231

View File

@ -55,11 +55,23 @@ void PythonManager::initPythonHome()
}
#endif
#if (PY_MAJOR_VERSION <= 3) && (PY_MICRO_VERSION < 11)
if (!customPythonHome.isNull()) {
qInfo() << "PYTHONHOME =" << customPythonHome;
pythonHome = Py_DecodeLocale(customPythonHome.toLocal8Bit().constData(), nullptr);
// This function is deprecated starting from Python 3.11
Py_SetPythonHome(pythonHome);
}
#else
PyConfig config;
PyConfig_InitPythonConfig(&config);
if (!customPythonHome.isNull()) {
qInfo() << "PYTHONHOME =" << customPythonHome;
PyConfig_SetBytesString(&config, &config.home, customPythonHome);
}
#endif
}
#ifdef CUTTER_ENABLE_PYTHON_BINDINGS
@ -75,11 +87,20 @@ void PythonManager::initialize()
#ifdef CUTTER_ENABLE_PYTHON_BINDINGS
PyImport_AppendInittab("CutterBindings", &PyInit_CutterBindings);
#endif
#if (PY_MAJOR_VERSION <= 3) && (PY_MICRO_VERSION < 11)
Py_Initialize();
#else
Py_InitializeFromConfig(&config);
#endif
// This function is deprecated does nothing starting from Python 3.9
#if (PY_MAJOR_VERSION <= 3) && (PY_MICRO_VERSION < 9)
PyEval_InitThreads();
#endif
#if (PY_MAJOR_VERSION <= 3) && (PY_MICRO_VERSION >= 11)
PyConfig_Clear(&config);
#endif
pyThreadStateCounter = 1; // we have the thread now => 1
RegQtResImporter();