Hi Barry, void handleError(const char* msg) { ... PyErr_Fetch(&pyExcType, &pyExcValue, &pyExcTraceback); PyErr_NormalizeException(&pyExcType, &pyExcValue, &pyExcTraceback);
PyObject* str_value = PyObject_Repr(pyExcValue); PyObject* pyExcValueStr = PyUnicode_AsEncodedString(str_value, "utf-8", "Error ~"); const char **strErrValue* = PyBytes_AS_STRING(pyExcValueStr); //where *strErrValue* = "ImportError('Error: Reinit is forbidden')" ... } What we imported is a Python file which import some pyd libraries. Thanks Jason On Thu, May 18, 2023 at 3:53 AM Barry <ba...@barrys-emacs.org> wrote: > > > > On 17 May 2023, at 20:35, Jason Qian via Python-list < > python-list@python.org> wrote: > > > > Hi, > > > > I Need some of your help. > > > > I have the following C code to import *Import python.* It works 99% of > > the time, but sometimes receives "*ImportError('Error: Reinit is > > forbidden')*". error. > > **We run multiple instances of the app parallelly. > > > > *** Python version(3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC > > v.1914 64 bit (AMD64)] > > > > PyObject * importPythonModule(const char* pmodName) > > { > > const char* errors = NULL; > > int nlen = strlen(pmodName); > > PyObject *pName = PyUnicode_DecodeUTF8(pmodName, nlen, errors); > > PyObject *pModule = *PyImport_Import*(pName); > > Py_DECREF(pName); > > if (pModule == NULL) { > > if (*PyErr_Occurred*()) { > > handleError("PyImport_Import()"); > > } > > } > > } > > void handleError(const char* msg) > > { > > ... > > "PyImport_Import() - ImportError('Error: Reinit is forbidden')" > > } > > You do not seem to printing out msg, you have assumed it means reinit it > seems. > What does msg contain when it fails? > > Barry > > > > > > Thanks > > Jason > > -- > > https://mail.python.org/mailman/listinfo/python-list > > > > -- https://mail.python.org/mailman/listinfo/python-list