Django 无法在 OS X 上导入cx_Oracle,尽管 python 可以



我有一个非常奇怪的问题,我不能完全弄清楚,希望大家都能弄清楚。按照这个链接中的步骤,我已经安装了Oracle即时客户端和cx_Oracle,并且我可以在Python中导入cx_Orace,没有问题。我已经在一个虚拟世界里完成了这一切。

问题是当我尝试时

./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脚本实际上会破坏我在python中的cx_Oracle导入,并且不能解决django问题。相反,它给出了以下错误,无论是直接在Python中还是在django环境中。我该如何解决这个问题?我需要能够在django中导入cx_Oracle!谢谢

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

编辑:我擦拭并重新创造了我的虚拟世界。然后,当我意识到我没有在与即时客户端可执行文件相同的目录中运行Ruby脚本后,我重试了它。它从运行并更新

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

我尝试在我的virtualenv python中导入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不能。

按照本页底部的说明安装Oracle即时客户端:

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

您可能还需要设置DYLD_LIBRARY_PATH或使用otool-L和install_name_tool进行调整。

最新更新