Модуль 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 на вашей стороне.
" обратите внимание, что для установки клиента (или сервера) 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. Нельзя смешивать и сочетать. Связи:
-
Oracle Instant Client допустим он установлен в
C:\ProgFiles\OraClient_2
- cx_Oracle
- Python
-
Oracle Instant Client допустим он установлен в
- окна:
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->Переменные среды->системные переменные).