Initial Commit

This commit is contained in:
2023-10-28 17:42:18 +02:00
parent 517470b42a
commit 6ab8de5125
6 changed files with 117 additions and 0 deletions

32
src/PyWrap.cc Normal file
View File

@@ -0,0 +1,32 @@
#define PY_SSIZE_T_CLEAN
#include <stdexcept>
#include "PyWrap.h"
namespace pywrap {
void PyWrap::doCommand(const std::string& command)
{
auto status = initPython(command);
if (PyStatus_Exception(status)) {
throw std::runtime_error("Error initializing Python");
}
Py_RunMain();
}
PyStatus PyWrap::initPython(const std::string& command)
{
PyStatus status;
PyConfig config;
PyConfig_InitPythonConfig(&config);
config.isolated = 0;
wchar_t* commandCoded = Py_DecodeLocale(command.c_str(), NULL);
config.run_command = commandCoded;
status = PyConfig_Read(&config);
if (PyStatus_Exception(status)) {
throw std::runtime_error("Error reading config");
}
status = Py_InitializeFromConfig(&config);
PyConfig_Clear(&config);
return status;
}
}