Ответ 1
ОК, что, наконец, решило проблему (не уверен, нужны ли все шаги и не знаю, почему именно это и только это сработало до сих пор):
Вот что я сделал:
instantclient-basic-nt-11.2.0.3.0.zip
, разархивировал его и поместил в C:\Program Files\Oracle\instantclient_11_2
.Path
.ORACLE_HOME
, удерживая этот путь как свое значение.cx_Oracle-5.1.2-11g.win32-py2.7.msi
.И при запуске import cx_Oracle
все, что я получаю, это
Traceback (most recent call last):
File "<string>", line 2, in <module>
ImportError: DLL load failed: This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.
Я, очевидно, удалил/переустановил cx_Oracle пару раз, но на самом деле ничего не помогает. Может ли кто-нибудь объяснить, как это исправить?
UPDATE
Я запустил Dependency Walker, и у него много проблем. Однако первый отсутствующий .dll(msvcr80.dll) на самом деле присутствует в C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.91_x-ww_0de56c07
.
ОК, что, наконец, решило проблему (не уверен, нужны ли все шаги и не знаю, почему именно это и только это сработало до сих пор):
Чтобы помочь другим людям с одинаковой проблемой:
Эта ошибка сообщает о несоответствии 32-64 бит между некоторыми DLL при импорте модуля. Возможности:
Имейте в виду, что cx_Oracle использует стандартный клиент Oracle (на уровне OCI), который должен быть установлен на вашем компьютере. Он ищет oci.dll в нескольких местах, включая PATH. Если он обнаружил oci.dll неправильной версии клиента, появляется ошибка.
Если вы получите этот путь проверки ошибок в переменной окружения PATH. Вероятно, он содержит путь к папке BIN неправильной версии клиента Oracle. Если у вас несколько клиентов, укажите в PATH соответствующий или установите соответствующий клиент.
ПРИМЕЧАНИЕ. ORACLE_HOME не влияет на cx_Oracle. В моем случае помогло только изменение PATH. Я думаю, что решение Ruben работает из-за элемента 3 ( "Добавьте этот же путь к переменной среды" Путь ").
Я использую python35 64 бит и oracle express на win 7 (64 бит).
Я установил cx_Oracle, используя pip3 (pip3 install cx_Oracle
) вместо загрузки установщика из pypi.
Я столкнулся с той же проблемой.
Я решил это, следуя приведенным выше рекомендациям, но вместо 32-битного клиента я загрузил 64-битную версию мгновенного клиента (instantclient-basic-windows.x64-11.2.0.4.0.zip) из http://www.oracle.com/technetwork/topics/winx64soft-089540.html.
Затем я извлек его в c:\oraclexe. И добавил эти переменные среды
set ORACLE_BASE=C:\oraclexe
set ORACLE_HOME=C:\oraclexe\app\oracle\product\11.2.0\server
set PATH=C:\oraclexe\instantclient_11_2;%PATH%
И запустил мои команды переноса django:
python manage.py migrate
Он отлично работал
Простой способ:
cx_Oracle-5.1.3-11g.win32-py2.7.exe
instantclient_12_1
и переместите его на C:\Python27
C:\Python27\instantclient_12_1
Тот же ImportError
для установки:
Я решил, что он копирует файл msvcr100.dll
в <oracle_instant_client_dir>
Если эта проблема также возникла, и импортирование cx_Oracle (по крайней мере, по версии 5.1.2) завершится неудачно (с той же ошибкой), если у вас есть недопустимые/недостижимые UNC-пути перед Oracle в переменной среды PATH.
Исправление пути UNC (которое не было связано с Oracle) разрешило проблему.
Если вы используете conda в качестве диспетчера пакетов, один из способов преодоления DLL-проблемы заключается в том, чтобы установить oracle-instantclient, выполнив conda install oracle-instantclient
. Это фиксировало зависимость, которую я не смог исправить, вручную установив мгновенный клиент Oracle.
Как уже во второй раз я пришел к этому вопросу, я чувствую необходимость опубликовать то, что я сделал:
Я использую:
Я не успел установить Python и cx_Oracle 64 бит.
Он работал только тогда, когда я пробовал 32-битные версии и следил за инструкциями @rob answer
У меня была такая же проблема с загрузкой DLL на моем компьютере с Windows. установленный клиент oracle, установить переменные, запустить файл cx_Oracle-5.1.3-11g.win32-py2.7.exe.
однако, когда я установил cx_Oracle с easy_setup, он исправил проблему.
C:\Python27\Scripts\easy_install.exe cx_Oracle-5.1.3-11g.win32-py2.7.exe
Шаги, которые я выполнил:
Скачан смарт-клиент instantclient-basic-windows.x64-12.1.0.2.0.zip
Извлечен и скопирован в # ваш каталог #\instantclient_12_1
Выше каталога содержит dll
Добавить переменную PATH С#your directory #\instantclient_12_1 и создать переменную env ORACLE_HOME = # ваш каталог #\instantclient_12_1
Загрузите и установите cx_Oracle-5.2.1-11g.win-amd64-py2.7.exe
Открыть импорт типа бездействия cx_Oracle
если вы используете Anaconda в Windows, попробуйте:
conda install cx_oracle
на вашем cmd
- > this