Django не может импортировать cx_Oracle в OS X, хотя python может

У меня очень странная проблема, которую я не могу понять и надеюсь, что вы все сможете. Следуя инструкциям, приведенным в этой ссылке, я установил мгновенный клиент Oracle и cx_Oracle и могу импортировать cx_Oracle в Python без проблем. Я сделал все это на виртуальном уровне.

Проблема в том, когда я пытаюсь

./manage.py runserver

я получил

raise ImproperlyConfigured("Error loading cx_Oracle module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading cx_Oracle module:
dlopen(/Users/shawn/Virtual/Django18/lib/python2.7/site-packages/cx_Oracle.so,
2): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
Referenced from: /Users/shawn/Virtual/Django18/lib/python2.7/site-packages/cx_Oracle.so
Reason: image not found

Конечно, именно там существует файл cx_Oracle.so.

Итак, я поискал и нашел этот вопрос SO , но выполнение сценария Ruby фактически прерывает мой импорт cx_Oracle в python и не решает проблему с django. Вместо этого он выдает ошибку ниже, будь то в Python напрямую или в среде django. Как это исправить? Мне нужно иметь возможность импортировать cx_Oracle в django! Спасибо!

ImportError: dlopen(/Users/shawn/Virtual/Django18/lib/python2.7/site-packages/cx_Oracle.so,
2): Library not loaded: /Users/Shawn/Oracle/instantclient_11_2/
Referenced from: /Users/shawn/Virtual/Django18/lib/python2.7/site-packages/cx_Oracle.so
Reason: no suitable image found.  Did find:
/Users/Shawn/Oracle/instantclient_11_2/: not a file
/Users/Shawn/Oracle/instantclient_11_2/: not a file
/usr/local/lib/: not a file
/usr/lib/: not a file

РЕДАКТИРОВАТЬ: Я стер и воссоздал свой virtualenv. Затем я повторил сценарий Ruby после того, как понял, что я не запускал его в том же каталоге, что и исполняемые файлы мгновенного клиента. Он запускался и обновлялся с

@executable_path/...
to
/Users/shawn/Oracle/...

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

Raise ImproperlyConfigured("Error loading cx_Oracle module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading cx_Oracle module: dlopen(/Users/shawn/Virtual/Django18/lib/python2.7/site-packages/cx_Oracle.so, 2): Library not loaded: libclntsh.dylib.11.1
Referenced from: /Users/shawn/Virtual/Django18/lib/python2.7/site-packages/cx_Oracle.so
Reason: image not found

Я не могу понять, почему python может его импортировать, а django - нет.


person Shawn    schedule 09.05.2016    source источник
comment
Вы запускаете python из своей виртуальной среды, где у вас установлен cx_Oracle?   -  person hd1    schedule 09.05.2016
comment
да. Он импортирует cx_Oracle нормально   -  person Shawn    schedule 09.05.2016


Ответы (1)


Следуйте инструкциям внизу этой страницы, чтобы выполнить установку мгновенного клиента Oracle:

http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

Вам также может потребоваться установить DYLD_LIBRARY_PATH или настроить параметры с помощью otool -L и install_name_tool.

person Anthony Tuininga    schedule 10.05.2016
comment
Я попробовал эти инструкции, которые были идентичны тем, что я сделал, за исключением дополнительной части о ~ / lib. Никакой радости. Сценарий Ruby, упомянутый в моем вопросе, настраивает вещи с помощью otool -L и install_name_tool. В любом случае спасибо. - person Shawn; 11.05.2016
comment
Пожалуйста. Я не эксперт по Mac, но у меня есть доступ к Mac, и я могу попробовать эти шаги самостоятельно. Я также знаком с Django, поэтому дам вам знать, смогу ли я его воспроизвести. - person Anthony Tuininga; 11.05.2016