У меня проблема с импортом 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 amd MSVCR90, которые не найдены на моей удаленной рабочей станции.
У меня есть следующие настройки переменных среды:
-
C:\Oracle as ORACLE_BASE
-
C:\Oracle\instantclient_12_1
как ORACLE_HOME -
C:\Oracle\instantclient_12_1
добавлен в переменную "Путь"
Обе машины 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-битных систем, и теперь все отлично работает на моей удаленной рабочей станции.
EDIT 2
В основном, исправление состояло в том, что я переустанавливал все (Python, Oracle Instant Client и cx_Oracle) для 64-битных систем вместо 32-разрядных систем.
Подводя итог, это была моя проблема и как она была исправлена: 1) Я установил Cx_Oracle (из 32-битного установочного пакета Windows) и 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). Надеюсь, это поможет.