如何在CentOS 6上导入cx_Oracle?

问题描述:

我很难让Django使用访问Oracle的Apache/mod_wsgi安装。我有这个安装一个CentOS 6主机上运行,​​而我在我的Apache日志收到此错误:如何在CentOS 6上导入cx_Oracle?

Error loading cx_Oracle module: libclntsh.so.10.1: cannot open shared object file: No such file or directory 

如果我试图从Python命令行导入cx_Oracle工作在根和Apache的用户罚款。我正确地设置了ORACLE_HOMELD_LIBRARY_PATH$ORACLE_HOME/lib):在~/.bashrc,/etc/ld.so.conf.d/oracle.conf,~/.bash_profile,任何地方我都可以设置env var。

我也试图使在/usr/lib硬链接或符号链接$ORACLE_HOME/lib/libclntsh.so.10.1,但我得到了一个权限错误,无论我从/usr多少chmod 777发放到/usr/lib和文件。

我加了ORACLE_HOMELD_LIBRARY_PATH/etc/sysconfig/httpd没有变化。

显然这个错误只有在Apache用户运行导入cx_Oracle命令时才会发生,尽管使用此用户登录我可以从Python解释器运行命令。

当您从源代码构建cx_Oracle时,请将LD_RUN_PATH环境变量设置为包含Oracle .so文件的lib目录的路径,并将该位置嵌入到cx_Oracle .so中,并知道从何处获取libclntsh.so运行时无需设置LD_LIBRARY_PATH。

+0

我已经建立了cx_Oracle没有这个选项。所以我可以只设置该var并重建它,它应该工作,或者我应该在重建之前先删除它? – lmisael 2011-12-28 00:47:51

+0

您需要从干净的cx_Oracle源代码开始,以确保不使用已经构建的版本。变量需要在用户环境中设置和导出。一旦完成构建/安装cx_Oracle,之后将该变量设置为不需要。 – 2011-12-28 01:52:22

+0

仍然没有工作。我收到相同的错误消息。我如何知道Apache使用哪个Python来运行WSGI?无论如何,我可以运行命令'import cx_Oracle'作为apache,这对我来说是最奇怪的。 – lmisael 2011-12-28 17:21:56

没有重新安装,有更好的解决方案.. “将/app/oracle/oracle/product/10.2.0/db_1/lib添加到/etc/ld.so.conf并运行ldconfig。”从 http://catherinedevlin.blogspot.com/2005/10/cxoracle-and-ubuntu.html

+0

谢谢。这对我有效 – SKG 2015-10-29 18:12:08