Welke versie van Windows draai je? Is het 32 of 64 bit?
Is uw Oracle Instant Client 32 of 64 beetje ?
Is uw Python-installatie 32 of 64 beetje ?
Is uw cx_oracle de juiste versie? 32 of 64 beetje ?
MSVCR90.dll maakt deel uit van het Microsoft Visual C++ 2008 SP1 Redistributable-pakket.
32-bits versie beschikbaar hier , 64-bits versie beschikbaar hier .
IESHIMS.dll bevindt zich in C:\Program Files\Internet Explorer\Ieshims.dll
(32-bits Windows-locatie of 64-bits Windows-locatie) of C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (32-bits Windows-locatie op 64-bits Windows), als uw versie van Windows Vista of nieuwer is.
GPSVC.dll zou moeten leven in C:\Windows\System32
.
Dependency Walker meldt dat deze laatste 2 DLL's ontbreken omdat ze door Windows Error Reporting worden gebruikt die IEFrame.DLL gebruiken en vertraagd worden geladen, wat betekent dat ze misschien nooit echt nodig zijn.
Ik ontdekte dat om cx_oracle schoon te laten importeren, je ervoor moet zorgen dat de versies van de afhankelijkheden overeenkomen. U moet er ook voor zorgen dat de Oracle-clientinstallatie overeenkomt met uw ORACLE_HOME
en uw PATH-variabele bevat %ORACLE_HOME%/bin
, die is ingesteld als een omgevingsvariabele of in het register, en dat uw tnsnames.ora-bestand leeft in de waarde waar TNS_ADMIN op is ingesteld. Zoals vermeld in Emmanuel 's antwoord, de standaardwaarde voor een uitgeschakelde TNS_ADMIN-instelling is %ORACLE_HOME%\network\admin
.
Ik heb ook zelden de instant-clientversie van het oracle-installatieprogramma gebruikt, tenzij dit absoluut noodzakelijk is, omdat het, in tegenstelling tot de andere versies, niet altijd zorgt dat Pad, ORACLE_HOME of TNS_ADMIN correct worden ingesteld of onderhouden, wat ertoe leidt dat tnsnames.ora en OCI.dll niet zijn gevonden. Dit wordt ingewikkelder als je meerdere Python-versies of Oracle-versies op dezelfde machine hebt staan.
Om ze expliciet in te stellen, kunt u Omgevingsvariabelen (Gebruiker of Systeem) gebruiken, die in het Configuratiescherm staan onder het Systeempictogram, de taak Geavanceerde systeeminstellingen, het tabblad Geavanceerd, de knop Omgeving.
Betreffende InterfaceError: Unable to acquire Oracle environment handle
, dit gebeurt met name wanneer cx_Oracle, in tegenstelling tot het niet oplossen van OCI.dll , niet weet welke OCI.dll moet worden gebruikt, normaal gesproken is dit het geval vanwege de PATH-variabele die twee of meer zoekmappen bevat die OCI.dll bevatten.
Door ervoor te zorgen dat uw PATH slechts één moment van OCI.dll bevat, ofwel van de instant-clientinstallatie of de Oracle 11G XE-installatie, zou uw probleem moeten worden opgelost.
Heeft u de instant-client verwijderd voordat u Oracle 11G XE installeerde?
Plak het volgende in een opdrachtprompt.
echo The current ORACLE_HOME is %ORACLE_HOME%
echo The current TNS_ADMIN is %TNS_ADMIN%
echo The current PATH is %PATH%
Om de huidige waarde van deze variabelen te zien.
Verdere bronnen
- Voorbeeld van instelling omgevingsvariabele
- cx_oracle mailingbericht over ontbrekende TNS_ADMIN
- Installatie-instructies voor cx_oracle op Windows