Salome HOME
PyInterp for python >3.8
authorOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Wed, 1 Mar 2023 14:38:26 +0000 (15:38 +0100)
committerOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Wed, 1 Mar 2023 14:38:26 +0000 (15:38 +0100)
Patch from Phimeca.

tools/PyConsole/src/PyConsole_Editor.h
tools/PyInterp/src/PyInterp_Interp.cxx

index 451a79f97c508aeef81d917ddd8a7be2a88b200a..0748cf1e66f56787607b551716baa8076fe8bfb3 100644 (file)
@@ -38,7 +38,7 @@ class QEventLoop;
 
 class PYCONSOLE_EXPORT PyConsole_Editor : public QTextEdit
 {
-  Q_OBJECT;
+  Q_OBJECT
 
 public:
   PyConsole_Editor( QWidget* = 0 );
index 287f6400e0b834bc34c4bbc4fdb0c11f4c5f0bce..6ad2fe9afce71c1b069d1d366e8b55852e8d33c5 100644 (file)
@@ -268,10 +268,19 @@ void PyInterp_Interp::initPython()
     {
       changed_argv[i] = Py_DecodeLocale(_argv[i], NULL);
     }
-   
+
+#if PY_VERSION_HEX < 0x03080000
     Py_SetProgramName(changed_argv[0]);
     Py_Initialize(); // Initialize the interpreter
     PySys_SetArgv(_argc, changed_argv);
+#else
+    PyConfig config;
+    PyConfig_InitPythonConfig(&config);
+    PyStatus status = PyConfig_SetString(&config, &config.program_name, changed_argv[0]);
+    status = PyConfig_SetArgv(&config, _argc, changed_argv);
+    status = Py_InitializeFromConfig(&config);
+    PyConfig_Clear(&config);
+#endif
 
 #if PY_VERSION_HEX < 0x03070000
     PyEval_InitThreads(); // Create (and acquire) the Python global interpreter lock (GIL)