如何在CentOS 6上导入cx_Oracle?

时间:2011-12-27 21:59:24

标签: django centos mod-wsgi cx-oracle centos6

我很难让Django使用我的Apache / mod_wsgi安装访问Oracle。我在CentOS 6主机上运行此设置,我在Apache日志中收到此错误:

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

如果我尝试从Python命令行导入cx_Oracle,它在root用户和apache用户中都可以正常工作。我正确地设置了ORACLE_HOMELD_LIBRARY_PATH$ORACLE_HOME/lib):~/.bashrc/etc/ld.so.conf.d/oracle.conf~/.bash_profile,我可以在任何地方设置env var。< / p>

我还尝试在$ORACLE_HOME/lib/libclntsh.so.10.1中创建一个指向/usr/lib的硬链接或符号链接,但无论我{{1}发出了多少chmod 777,我都收到了权限错误向下到/usr和文件。

我将/usr/libORACLE_HOME添加到LD_LIBRARY_PATH,但没有任何变化。

显然只有当Apache用户运行import cx_Oracle命令时才会出现此错误,尽管使用此用户登录我可以从Python解释器运行命令。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

有一个更好的解决方案,无需重新安装.. &#34;将/app/oracle/oracle/product/10.2.0/db_1/lib附加到/etc/ld.so.conf并运行ldconfig。&#34;从 http://catherinedevlin.blogspot.com/2005/10/cxoracle-and-ubuntu.html