Re: Using cx_Oracle 6.0rc1 on Windows
Anthony Tuininga <[email protected]> Wed, 5 Jul 2017 16:45:54 -0600
| Newsgroups | gmane.comp.python.db.cx-oracle |
|---|---|
| Message-ID | <CAE1XR-6WXcLefwZSse_ew_pQQh_x=HuEx-bd4NdAQzkP+Vmdqg@mail.gmail.com> |
--===============0890342574243414879== Content-Type: multipart/alternative; boundary="089e0822ed5c4e639a055399c3a8" --089e0822ed5c4e639a055399c3a8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jul 5, 2017 at 4:12 PM, Anthony Tuininga <[email protected]= m > wrote: > On Wed, Jul 5, 2017 at 8:21 AM, Anthony Tuininga < > [email protected]> wrote: > >> >> >> On Wed, Jul 5, 2017 at 6:29 AM, Walter D=C3=B6rwald <walter@livinglogic.= de> >> wrote: >> >>> On 4 Jul 2017, at 16:35, Anthony Tuininga wrote: >>> >>> On Tue, Jul 4, 2017 at 3:18 AM, Walter D=C3=B6rwald <walter@livinglogic= .de> >>>> wrote: >>>> >>>> On 3 Jul 2017, at 15:59, Anthony Tuininga wrote: >>>>> >>>>> Hi Walter, >>>>> >>>>>> >>>>>> DPI_DEBUG_LEVEL=3D7 causes a bunch of output that tells me which pub= lic >>>>>> ODPI-C functions are being called. The fact that you are not getting >>>>>> any >>>>>> at >>>>>> all suggests something is going wrong even before cx_Oracle code is >>>>>> involved. Can you try a few more things? >>>>>> >>>>>> 1) Use python -v so you can see if the error is occurring prior to t= he >>>>>> actual import of cx_Oracle (it may not help but it might, too) >>>>>> >>>>>> >>>>> Here is the output of importing cx_Oracle in a verbose Python session= : >>>>> [...] >>>>> Traceback (most recent call last): >>>>> File "<stdin>", line 1, in <module> >>>>> File "<frozen importlib._bootstrap>", line 961, in _find_and_load >>>>> File "<frozen importlib._bootstrap>", line 950, in >>>>> _find_and_load_unlocked >>>>> File "<frozen importlib._bootstrap>", line 648, in _load_unlocked >>>>> File "<frozen importlib._bootstrap>", line 560, in module_from_spec >>>>> File "<frozen importlib._bootstrap_external>", line 922, in >>>>> create_module >>>>> File "<frozen importlib._bootstrap>", line 205, in >>>>> _call_with_frames_removed >>>>> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position >>>>> 66: >>>>> invalid continuation byte >>>>> >>>>> >>>> Looks like it may have started running code in the module as the first >>>> thing it does is imports the datetime and decimal modules. If you're >>>> able >>>> to add some printf() statements at key positions in the >>>> Module_Initialize() >>>> function in src/cx_Oracle.c that would be helpful. In particular, at t= he >>>> very beginning (to confirm that it is running), after the imports, aft= er >>>> the PyModule_Create() call, just prior to the dpiContext_create() call= , >>>> just after it, and just at the end. I wish I could replicate this >>>> myself! >>>> >>> >>> We've found the spot where the error occurs with the following patch: >>> >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> >>> C:\checkouts\python-cx_Oracle\odpi>git diff >>> diff --git a/src/dpiOci.c b/src/dpiOci.c >>> index f881bed..e588b1c 100644 >>> --- a/src/dpiOci.c >>> +++ b/src/dpiOci.c >>> @@ -1338,6 +1338,7 @@ static int dpiOci__loadLib(dpiError *error) >>> #ifdef _WIN32 >>> DWORD length, errorNum; >>> #endif >>> + printf("Start dpiOci__loadLib()\n"); >>> >>> // dynamically load the OCI library >>> for (i =3D 0; !dpiOciLibHandle; i++) { >>> @@ -1356,6 +1357,7 @@ static int dpiOci__loadLib(dpiError *error) >>> if (length > 3) >>> loadError[length - 3] =3D '\0'; >>> else strcpy(loadError, "DLL load failed"); >>> + printf("loadError: %s\n",loadError); >>> } >>> #else >>> dpiOciLibHandle =3D dlopen(libName, RTLD_LAZY); >>> @@ -1370,6 +1372,7 @@ static int dpiOci__loadLib(dpiError *error) >>> return dpiError__set(error, "load library", >>> DPI_ERR_LOAD_LIBRARY, >>> loadError); >>> >>> + printf("After LoadLibrary()\n"); >>> // validate library >>> if (dpiOci__loadLibValidate(error) < 0) { >>> #ifdef _WIN32 >>> >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> >>> With this patch, we get the following output: >>> >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> >>> import cx_Oracle >>>>>> >>>>> Start dpiOci__loadLib() >>> loadError: %1 ist keine zul=C3=B5ssige Win32-Anwendung >>> Traceback (most recent call last): >>> File "<stdin>", line 1, in <module> >>> File "<frozen importlib._bootstrap>", line 961, in _find_and_load >>> File "<frozen importlib._bootstrap>", line 950, in >>> _find_and_load_unlocked >>> File "<frozen importlib._bootstrap>", line 648, in _load_unlocked >>> File "<frozen importlib._bootstrap>", line 560, in module_from_spec >>> File "<frozen importlib._bootstrap_external>", line 922, in >>> create_module >>> File "<frozen importlib._bootstrap>", line 205, in >>> _call_with_frames_removed >>> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 66= : >>> invalid continuation byte >>> >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> >>> "%1 ist keine zul=C3=B5ssige Win32-Anwendung" (which should read "%1 is= t >>> keine zul=C3=A4ssige Win32-Anwendung", i.e. the "=C3=B6" should be an "= =C3=A4") means "%1 >>> is not an acceptable win32 application". >>> >>> So we don't see the real problem because cx_Oracle fails to create the >>> proper Unicode string from the OS error message. >>> >>> It's not clear what encoding this is (probable latin-1 or cp1252, but >>> definitely *not* UTF-8). A >>> >>> grep 'xe4.*LATIN SMALL LETTER A WITH DIAERESIS' Lib/encodings/*.py >>> >>> in the Python source code returns 40 encodings that map the byte 0xE4 t= o >>> =C3=A4. >>> >>> If the correct encoding can't be determined from the environment it >>> might be best to use a less strict error handling (like e.g. >>> backslashreplace) when decoding the bytes of the error message. >>> >> >> Thanks, Walter. This is very helpful. We'll have to see what makes the >> most sense in this case. Do you see information in the event log regardi= ng >> this error? >> > > I have discovered the source of the problem. I was able to replicate the > issue thanks to this pointer and have corrected it in the source. If you > can do a new pull and compile you should get the correct error message no= w. > If you can confirm that would be helpful! Thanks. > Just to be clear since the process is a bit different now: in your cx_Oracle repository you need to issue the following commands: git pull git submodule update That will update ODPI-C (where the correction was made) as well as cx_Oracle itself. > > >> >> >>> >>> And of cause it would help if %1 was resolved to a useful filename. >>> >> >> Naturally. But that information isn't directly provided. I'll look into >> that, too. >> > > This is a limitation of Windows and there isn't much that can be done > about it. Sorry! > > >> >> >>> >>> But now for the real error... >>> >>> [...] >>>> >>>>> >>>>> I also note that you are using VS 2017. Another person noted that >>>>> >>>>>> uninstalling VS 2017 and using an earlier version worked for him -- >>>>>> why >>>>>> that would be is an interesting question (!!?) but if you have a >>>>>> machine >>>>>> that doesn't have VS 2017 but an earlier version that would be worth >>>>>> testing, too. >>>>>> >>>>>> >>>>> We currently don't have a Windows 10 machine without VS 2017, but we'= re >>>>> going to >>>>> uninstall VS 2017 on this machine and retry with and an older version= . >>>>> >>>>> Also, IIRC this exception means that the VS Redistributables are >>>>> missing >>>>> or are >>>>> installed incorrectly. >>>>> >>>>> However I don't know how we can check this. >>>>> >>>> >>>> >>>> You can use this tool: http://www.dependencywalker.com/ which will >>>> tell you >>>> what dependencies the cx_Oracle.pyd file and all of their dependencies= , >>>> too. Hopefully it helps. >>>> >>> >>> OK, we tried that. The output is here: >>> >>> http://styx.livinglogic.de/~walter/cx_Oracle/cx_Oracle.cp36 >>> -win_amd64.txt >>> >>> dependencywalker seem that have many problems with this DLL, but what >>> sticks out is VCRUNTIME140.dll. This seems to be part of the "Visual C+= + >>> Redistributable for Visual Studio 2015" which we downloaded from here: >>> >>> https://www.microsoft.com/en-us/download/details.aspx?id=3D48145 >>> >>> (we've downloaded vc_redist.x64.exe). When we install it, it complains >>> that another version is already installed. After we've uninstalled the = 2017 >>> Redistributables installation works, but the output of "import cx_Oracl= e" >>> remains the same. >>> >> >> So the problem isn't resolved by the change of VS redistributable. Can >> you take a look in the event log? Can you also provide a list of all of = the >> VS redistributables you have installed? I am going to try to replicate t= his >> myself. >> >> >>> >>> [...] >>>> >>> >>> Servus, >>> Walter >>> >>> ------------------------------------------------------------ >>> ------------------ >>> Check out the vibrant tech community on one of the world's most >>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>> _______________________________________________ >>> cx-oracle-users mailing list >>> cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org >>> https://lists.sourceforge.net/lists/listinfo/cx-oracle-users >>> >> >> > --089e0822ed5c4e639a055399c3a8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo= te">On Wed, Jul 5, 2017 at 4:12 PM, Anthony Tuininga <span dir=3D"ltr"><= <a href=3D"mailto:[email protected]" target=3D"_blank">anthony.tui= [email protected]</a>></span> wrote:<br><blockquote class=3D"gmail_quote" = style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><di= v dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote"><div><d= iv class=3D"h5">On Wed, Jul 5, 2017 at 8:21 AM, Anthony Tuininga <span dir= =3D"ltr"><<a href=3D"mailto:[email protected]" target=3D"_blank= ">[email protected]</a>></span> wrote:<br><blockquote class=3D"= gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-= left:1ex"><div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D= "gmail_quote"><div><div class=3D"m_-4699702014505172771h5">On Wed, Jul 5, 2= 017 at 6:29 AM, Walter D=C3=B6rwald <span dir=3D"ltr"><<a href=3D"mailto= :[email protected]" target=3D"_blank">[email protected]</a>></sp= an> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;= border-left:1px #ccc solid;padding-left:1ex"><span>On 4 Jul 2017, at 16:35,= Anthony Tuininga wrote:<br> <br> </span><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-= left:1px #ccc solid;padding-left:1ex"><span> On Tue, Jul 4, 2017 at 3:18 AM, Walter D=C3=B6rwald <<a href=3D"mailto:w= [email protected]" target=3D"_blank">[email protected]</a>><br> wrote:<br> <br> </span><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-= left:1px #ccc solid;padding-left:1ex"><span> On 3 Jul 2017, at 15:59, Anthony Tuininga wrote:<br> <br> Hi Walter,<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> <br> DPI_DEBUG_LEVEL=3D7 causes a bunch of output that tells me which public<br> ODPI-C functions are being called. The fact that you are not getting any<br= > at<br> all suggests something is going wrong even before cx_Oracle code is<br> involved. Can you try a few more things?<br> <br> 1) Use python -v so you can see if the error is occurring prior to the<br> actual import of cx_Oracle (it may not help but it might, too)<br> <br> </blockquote> <br> Here is the output of importing cx_Oracle in a verbose Python session:<br><= /span> [...]<span><br> Traceback (most recent call last):<br> =C2=A0 File "<stdin>", line 1, in <module><br> =C2=A0 File "<frozen importlib._bootstrap>", line 961, in _= find_and_load<br> =C2=A0 File "<frozen importlib._bootstrap>", line 950, in<b= r> _find_and_load_unlocked<br> =C2=A0 File "<frozen importlib._bootstrap>", line 648, in _= load_unlocked<br> =C2=A0 File "<frozen importlib._bootstrap>", line 560, in m= odule_from_spec<br> =C2=A0 File "<frozen importlib._bootstrap_external><wbr>", = line 922, in<br> create_module<br> =C2=A0 File "<frozen importlib._bootstrap>", line 205, in<b= r> _call_with_frames_removed<br> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in pos= ition 66:<br> invalid continuation byte<br> <br> </span></blockquote> <br><span> Looks like it may have started running code in the module as the first<br> thing it does is imports the datetime and decimal modules. If you're ab= le<br> to add some printf() statements at key positions in the Module_Initialize()= <br> function in src/cx_Oracle.c that would be helpful. In particular, at the<br= > very beginning (to confirm that it is running), after the imports, after<br= > the PyModule_Create() call, just prior to the dpiContext_create() call,<br> just after it, and just at the end. I wish I could replicate this myself!<b= r> </span></blockquote> <br> We've found the spot where the error occurs with the following patch:<b= r> <br> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D<br> <br> C:\checkouts\python-cx_Oracle\<wbr>odpi>git diff<br> diff --git a/src/dpiOci.c b/src/dpiOci.c<br> index f881bed..e588b1c 100644<br> --- a/src/dpiOci.c<br> +++ b/src/dpiOci.c<br> @@ -1338,6 +1338,7 @@ static int dpiOci__loadLib(dpiError *error)<br> =C2=A0#ifdef _WIN32<br> =C2=A0 =C2=A0 =C2=A0DWORD length, errorNum;<br> =C2=A0#endif<br> +=C2=A0 =C2=A0 printf("Start dpiOci__loadLib()\n");<br> <br> =C2=A0 =C2=A0 =C2=A0// dynamically load the OCI library<br> =C2=A0 =C2=A0 =C2=A0for (i =3D 0; !dpiOciLibHandle; i++) {<br> @@ -1356,6 +1357,7 @@ static int dpiOci__loadLib(dpiError *error)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (length > 3)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0loadError[len= gth - 3] =3D '\0';<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0else strcpy(loadError, &quo= t;DLL load failed");<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 printf("loadError: %s\n&quo= t;,loadError);<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br> =C2=A0#else<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dpiOciLibHandle =3D dlopen(libName, RTLD_= LAZY);<br> @@ -1370,6 +1372,7 @@ static int dpiOci__loadLib(dpiError *error)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return dpiError__set(error, "load li= brary", DPI_ERR_LOAD_LIBRARY,<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0loadError);<b= r> <br> +=C2=A0 =C2=A0 printf("After LoadLibrary()\n");<br> =C2=A0 =C2=A0 =C2=A0// validate library<br> =C2=A0 =C2=A0 =C2=A0if (dpiOci__loadLibValidate(error<wbr>) < 0) {<br> =C2=A0#ifdef _WIN32<br> <br> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D<br> <br> With this patch, we get the following output:<br> <br> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D<br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"><blockquote class=3D"gmail_quote" style=3D"m= argin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote c= lass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;= padding-left:1ex"> import cx_Oracle<br> </blockquote></blockquote></blockquote> Start dpiOci__loadLib()<br> loadError: %1 ist keine zul=C3=B5ssige Win32-Anwendung<span><br> Traceback (most recent call last):<br> =C2=A0 File "<stdin>", line 1, in <module><br> =C2=A0 File "<frozen importlib._bootstrap>", line 961, in _= find_and_load<br> =C2=A0 File "<frozen importlib._bootstrap>", line 950, in _= find_and_load_unlocked<br> =C2=A0 File "<frozen importlib._bootstrap>", line 648, in _= load_unlocked<br> =C2=A0 File "<frozen importlib._bootstrap>", line 560, in m= odule_from_spec<br> =C2=A0 File "<frozen importlib._bootstrap_external><wbr>", = line 922, in create_module<br> =C2=A0 File "<frozen importlib._bootstrap>", line 205, in _= call_with_frames_removed<br> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in pos= ition 66: invalid continuation byte<br> <br> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D<br> <br></span> "%1 ist keine zul=C3=B5ssige Win32-Anwendung" (which should read = "%1 ist keine zul=C3=A4ssige Win32-Anwendung", i.e. the "=C3= =B6" should be an "=C3=A4") means "%1 is not an accepta= ble win32 application".<br> <br> So we don't see the real problem because cx_Oracle fails to create the = proper Unicode string from the OS error message.<br> <br> It's not clear what encoding this is (probable latin-1 or cp1252, but d= efinitely *not* UTF-8). A<br> <br> =C2=A0 =C2=A0grep 'xe4.*LATIN SMALL LETTER A WITH DIAERESIS' Lib/en= codings/*.py<br> <br> in the Python source code returns 40 encodings that map the byte 0xE4 to = =C3=A4.<br> <br> If the correct encoding can't be determined from the environment it mig= ht be best to use a less strict error handling (like e.g. backslashreplace)= when decoding the bytes of the error message.<br></blockquote><div><br></d= iv></div></div><div>Thanks, Walter. This is very helpful. We'll have to= see what makes the most sense in this case. Do you see information in the = event log regarding this error?</div></div></div></div></blockquote><div><b= r></div></div></div><div>I have discovered the source of the problem. I was= able to replicate the issue thanks to this pointer and have corrected it i= n the source. If you can do a new pull and compile you should get the corre= ct error message now. If you can confirm that would be helpful! Thanks.</di= v></div></div></div></blockquote><div><br></div><div>Just to be clear since= the process is a bit different now: in your cx_Oracle repository you need = to issue the following commands:</div><div><br></div><div>git pull</div><di= v>git submodule update</div><div><br></div><div>That will update ODPI-C (wh= ere the correction was made) as well as cx_Oracle itself.</div><div>=C2=A0<= /div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-le= ft:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div class=3D"gmail_ex= tra"><div class=3D"gmail_quote"><span class=3D""><div>=C2=A0</div><blockquo= te class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc so= lid;padding-left:1ex"><div dir=3D"ltr"><div class=3D"gmail_extra"><div clas= s=3D"gmail_quote"><span><div>=C2=A0</div><blockquote class=3D"gmail_quote" = style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br> And of cause it would help if %1 was resolved to a useful filename.<br></bl= ockquote><div><br></div></span><div>Naturally. But that information isn'= ;t directly provided. I'll look into that, too.</div></div></div></div>= </blockquote><div><br></div></span><div>This is a limitation of Windows and= there isn't much that can be done about it. Sorry!</div><div><div clas= s=3D"h5"><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin= :0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><= div class=3D"gmail_extra"><div class=3D"gmail_quote"><span><div>=C2=A0</div= ><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1= px #ccc solid;padding-left:1ex"> <br> But now for the real error...<br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> [...]<span><br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> <br> I also note that you are using VS 2017. Another person noted that<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> uninstalling VS 2017 and using an earlier version worked for him -- why<br> that would be is an interesting question (!!?) but if you have a machine<br= > that doesn't have VS 2017 but an earlier version that would be worth<br= > testing, too.<br> <br> </blockquote> <br> We currently don't have a Windows 10 machine without VS 2017, but we= 9;re<br> going to<br> uninstall VS 2017 on this machine and retry with and an older version.<br> <br> Also, IIRC this exception means that the VS Redistributables are missing<br= > or are<br> installed incorrectly.<br> <br> However I don't know how we can check this.<br> </blockquote> <br> <br> You can use this tool: <a href=3D"http://www.dependencywalker.com/" rel=3D"= noreferrer" target=3D"_blank">http://www.dependencywalker.co<wbr>m/</a> whi= ch will tell you<br> what dependencies the cx_Oracle.pyd file and all of their dependencies,<br> too. Hopefully it helps.<br> </span></blockquote> <br> OK, we tried that. The output is here:<br> <br> =C2=A0 =C2=A0<a href=3D"http://styx.livinglogic.de/~walter/cx_Oracle/cx_Ora= cle.cp36-win_amd64.txt" rel=3D"noreferrer" target=3D"_blank">http://styx.li= vinglogic.de/~w<wbr>alter/cx_Oracle/cx_Oracle.cp36<wbr>-win_amd64.txt</a><b= r> <br> dependencywalker seem that have many problems with this DLL, but what stick= s out is VCRUNTIME140.dll. This seems to be part of the "Visual C++ Re= distributable for Visual Studio 2015" which we downloaded from here:<b= r> <br> =C2=A0 =C2=A0<a href=3D"https://www.microsoft.com/en-us/download/details.as= px?id=3D48145" rel=3D"noreferrer" target=3D"_blank">https://www.microsoft.c= om/en-<wbr>us/download/details.aspx?id=3D48<wbr>145</a><br> <br> (we've downloaded vc_redist.x64.exe). When we install it, it complains = that another version is already installed. After we've uninstalled the = 2017 Redistributables installation works, but the output of "import cx= _Oracle" remains the same.<br></blockquote><div><br></div></span><div>= So the problem isn't resolved by the change of VS redistributable. Can = you take a look in the event log? Can you also provide a list of all of the= VS redistributables you have installed? I am going to try to replicate thi= s myself.</div><span><div>=C2=A0</div><blockquote class=3D"gmail_quote" sty= le=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> [...]<br> </blockquote><div class=3D"m_-4699702014505172771m_-4378990375602489051HOEn= Zb"><div class=3D"m_-4699702014505172771m_-4378990375602489051h5"> <br> Servus,<br> =C2=A0 =C2=A0Walter<br> <br> ------------------------------<wbr>------------------------------<wbr>-----= -------------<br> Check out the vibrant tech community on one of the world's most<br> engaging tech sites, Slashdot.org! <a href=3D"http://sdm.link/slashdot" rel= =3D"noreferrer" target=3D"_blank">http://sdm.link/slashdot</a><br> ______________________________<wbr>_________________<br> cx-oracle-users mailing list<br> <a href=3D"mailto:cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org" target=3D"_blank">= [email protected]<wbr>rge.net</a><br> <a href=3D"https://lists.sourceforge.net/lists/listinfo/cx-oracle-users" re= l=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/<wbr>lists= /listinfo/cx-oracle-users</a><br> </div></div></blockquote></span></div><br></div></div> </blockquote></div></div></div><br></div></div> </blockquote></div><br></div></div> --089e0822ed5c4e639a055399c3a8-- --===============0890342574243414879== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot --===============0890342574243414879== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ cx-oracle-users mailing list cx-oracle-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/cx-oracle-users --===============0890342574243414879==--