如何在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_HOME
和LD_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_HOME
和LD_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。
没有重新安装,有更好的解决方案.. “将/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
谢谢。这对我有效 – SKG 2015-10-29 18:12:08
我已经建立了cx_Oracle没有这个选项。所以我可以只设置该var并重建它,它应该工作,或者我应该在重建之前先删除它? – lmisael 2011-12-28 00:47:51
您需要从干净的cx_Oracle源代码开始,以确保不使用已经构建的版本。变量需要在用户环境中设置和导出。一旦完成构建/安装cx_Oracle,之后将该变量设置为不需要。 – 2011-12-28 01:52:22
仍然没有工作。我收到相同的错误消息。我如何知道Apache使用哪个Python来运行WSGI?无论如何,我可以运行命令'import cx_Oracle'作为apache,这对我来说是最奇怪的。 – lmisael 2011-12-28 17:21:56