Модуль Python" CX Oracle " модуль не найден

недавно я установил модуль cx_Oracle на своей машине, чтобы подключиться к удаленному серверу баз данных Oracle. (У меня нет клиента Oracle на моей стороне).

  • Python: версия 2.7 x86
  • Oracle: Verision 11.1.X x64
  • Cx_Oracle: Verion-5.1.2-11g.win32-py2.7

затем каждый раз, когда я запускаю свой скрипт, он терпит неудачу и печатает следующее сообщение:

ImportError: ошибка загрузки DLL: указанный модуль может не нашли.

Я нашел соответствующий пост в здесь, поэтому мне интересно, должен ли я иметь клиент Oracle на моей стороне, где вызывается скрипт python.

кто-нибудь может мне помочь? Спасибо заранее.

4 ответов


Да, у вас должен быть установлен клиент Oracle на вашей стороне.

с cx_ORacle README

" обратите внимание, что для установки клиента (или сервера) Oracle требуется использовать cx_Oracle. Если вам не требуются инструменты, которые поставляются с полным клиентом установка, рекомендуется установить мгновенный клиент, который находится далеко проще установить."

редактировать ссылка на клиент мгновенного: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html


# - This import requires appropriate oraocciXX.dll to be available in PATH (on windows)
#   (Probably LD_LIBRARY_PATH or LD_LIBRARY_PATH64 on POSIX)
#     where XX is the oracle DB version, e.g. oraocci11.dll for Oracle 11g.
# - This dll is part of the Oracle Instant client pkg available here:
#     http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
# - Also ensure that python, cx_Oracle and Oracle Client are of same arch (32 or 64-bit)
#
import cx_Oracle

вы можете узнать arch (32 или 64-бит) для:

  • python, просто запустив python в интерактивном режиме в командной строке.
  • cx_Oracle: посмотрите на имя загруженного файла.
  • Клиент Oracle :
    • запустите sqlplus, который является частью вашего клиентского пакета
    • запустите Диспетчер задач и посмотрите, если sqlplus.exe имеет" * 32 " рядом с ним (=32 бит) или нет (=64 бит)
    • если у вас нет sqlplus, используйте dumpbin /headers oraocciXX.dll
  • если вы используете POSIX, вы, вероятно, уже знаете. Использовать file oraocciXX.so

наконец, если вы все еще не понимаете, вот действительно для чайников инструкции:

  • убедитесь, что вы установили 32-разрядные версии python, cx_Oracle и Oracle Instant Client. Они также могут быть 64-битными, но должны быть одинаковыми для всех 3. Нельзя смешивать и сочетать. Связи:
  • окна:
    • set PATH=%PATH%;C:\ProgFiles\OraClient_2
  • POSIX (Linux / Unix / Solaris...)
  • export LD_LIBRARY_PATH=/path/to/your/32bit/oraocciXX.so
  • (64 бит) export LD_LIBRARY_PATH64=/path/to/your/64bit/oraocciXX.so
  • выполнить path-to-python/python.exe -c "import cx_Oracle" чтобы проверить, работает ли ваша установка или нет.
    • если он печатает
    • ничего: тогда он успешен.
    • ImportError: DLL load failed: The specified module could not be found: тогда oraocciXX не найден. Правильно настройте env vars.
    • ImportError: DLL load failed: %1 is not a valid Win32 application: у вас есть 32/64-битное несоответствие.

  • после того, как пытался решить эту проблему в течение нескольких дней, я узнал, что set PATH=%PATH%:<insert Oracle home here> не сделал трюк для меня. Мне пришлось войти в мои системные свойства Windows XP и добавить Oracle home к переменной "path" в разделе "системные переменные".


    Я пока не могу комментировать : - (но для uniquephase выше, вы можете попробовать проверить разрешения .exe и .DLL, чтобы убедиться, что они исполняемы?

    Итак, шаги, которые мне нужно было сделать, чтобы заставить его работать.

    распакуйте мгновенный клиент отсюда. http://www.oracle.com/technetwork/topics/winx64soft-089540.html

    chmod +x *.исполняемый.* dll (я использую cygwin).

    для полноты, я не смог получить cx_oracle для установки через pip используя cygwin.

    поэтому мне пришлось использовать стандартный dist python (не cygwin) и установить cx_oracle через установщик windows.

    кроме того, я должен был добавить f:/opt/instantclient_12_1 (место, где я установил Oracle instant client) в путь Windows (через System->Advanced System Properties->Переменные среды->системные переменные).