62 if (Py_IsInitialized()) {
63 return StatusCode::SUCCESS;
70#if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 11
73 if (!Py_IsInitialized()) {
74 ::report_py_exception();
75 return StatusCode::FAILURE;
80 []() { std::vector<std::wstring> wargs;
81 int argc = System::argc();
82 char** argv = System::argv();
84 using convert_t = std::codecvt_utf8<wchar_t>;
85 std::wstring_convert<convert_t, wchar_t> strconverter;
86 for (
int i=0; i < argc; ++i) {
87 wargs.push_back (strconverter.from_bytes (argv[i]));
91 static const std::vector<std::wstring> wargs = wargsinit();
94 [](
const std::vector<std::wstring>& wargs)
95 { std::vector<const wchar_t*> wargv;
96 int argc = System::argc();
97 for (
int i=0; i < argc; ++i) {
98 wargv.push_back (wargs[i].
data());
102 static const std::vector<const wchar_t*> wargv = wargvinit (wargs);
106 PySys_SetArgv(System::argc(), wargv_nc);
109 PyConfig_InitPythonConfig (&
config);
110 PyStatus status = PyConfig_SetBytesArgv (&
config, System::argc(),
112 if (PyStatus_Exception (status)) {
113 report_py_exception();
115 return StatusCode::FAILURE;
118 status = Py_InitializeFromConfig (&
config);
119 if (PyStatus_Exception (status)) {
120 report_py_exception();
122 return StatusCode::FAILURE;
126 return StatusCode::SUCCESS;