cx_Oracle - сбой загрузки DLL
У меня проблема с импортом cx_Oracle с Python. Я знаю, что многие проблемы с cx_Oracle были обсуждены здесь, но кажется, что я не могу найти решение своей проблемы после прочтения всех связанных тем.
У меня есть две машины, одна - мой компьютер, а другая - удаленная рабочая станция с одинаковыми конфигурациями (Windows 7, 64-битная версия). Мне нужно установить cx_Oracle на удаленную рабочую станцию, но он не работает, хотя он отлично работает на моем компьютере (я могу успешно импортировать модуль и подключиться к моей БД). На удаленной рабочей станции у меня следующая ошибка:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import cx_Oracle
ImportError: DLL load failed: The specified module could not be found.
Я дважды проверил свои переменные окружения, и я пару раз переустанавливал cx_Oracle, но не могу заставить его работать ... Я провел некоторое исследование по этой проблеме, и я застрял здесь, я не понимаю, почему это отлично работает на моем компьютере, но не на этой удаленной рабочей станции (единственное отличие состоит в том, что эта удаленная рабочая станция является виртуальной машиной).
У кого-нибудь есть идея, в чем может быть проблема?
Запустив Dependancy Walker на обоих cx_oracle.pyd (на моем компьютере, где он работает нормально, и на удаленной рабочей станции, где cx_oracle не работает), единственное отличие - это dll MSVCR100 и MSVCR90, которые не найдены на моей удаленной рабочей станции.
У меня есть следующие настройки переменных среды:
C:\Oracle as ORACLE_BASE
C:\Oracle\instantclient_12_1
как ORACLE_HOME
C:\Oracle\instantclient_12_1
добавлен в переменную "Path"
Обе машины 64-битные, Windows 7
Я использую Python 2.7.5
Я распаковал InstantClient-Basic-NT-12.1.0.1.0 вC:\Oracle\instantclient_12_1
Я установилcx_Oracle-5.1.2-11g.win32-py2.7s
На удаленной рабочей станции,sys.path
дает мне :
'C: \ Python27 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python27.zip', 'C: \ Python27 \ DLLs', 'C: \ Python27 \ lib', 'C: \ Python27 \ lib \ plat-win ',' C: \ Python27 \ lib \ lib-tk ',' C: \ Python27 ',' C: \ Python27 \ lib \ site-packages '
РЕДАКТИРОВАТЬ 1В предыдущем посте все файлы (Python 2.7, пакет cx_Oracle, клиент Oracle Instant) были для 32-битных систем. Я скачал одну и ту же версию этих файлов для 64-битных систем, и теперь все нормально работает на моей удаленной рабочей станции.
РЕДАКТИРОВАТЬ 2По сути, это исправление состояло в том, что я переустанавливал все (Python, Oracle Instant Client и cx_Oracle) для 64-битных систем вместо 32-битных.
Подводя итог, можно сказать, что это была моя проблема, и как она была исправлена: 1) Я установил Cx_Oracle (из установочного пакета 32-битных окон) и Oracle Instant Client (32-битный), и он отлично работал на моей 64-битной системе, работающей на python 2.7. .5 для 32-битных систем 2) Я сделал то же самое точно на виртуальной машине (также с 64-битной системой), и она не работала. 3) Чтобы она работала на виртуальной машине, я переустановил все для 64-битные системы (python, Instant Client, Cx_Oracle) и все наконец заработало
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html http://sourceforge.net/projects/cx-oracle/files/5.1.2/
Кроме того, обязательно загрузите клиент cx_Oracle и Instant, соответствующий вашей версии БД (в моем случае 11g). Надеюсь это поможет.