【问题标题】:How do I Import cx_Oracle on CentOS 6?如何在 CentOS 6 上导入 cx_Oracle?
【发布时间】:2012-01-28 19:13:41
【问题描述】:

我很难让 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,任何我可以设置环境变量的地方。

我也尝试过在/usr/lib 中建立到$ORACLE_HOME/lib/libclntsh.so.10.1 的硬链接或符号链接,但无论我从/usr/usr/lib 和文件。

我将ORACLE_HOMELD_LIBRARY_PATH 添加到/etc/sysconfig/httpd,没有任何变化。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我已经构建了没有该选项的 cx_Oracle。那么我可以设置那个 var 并重建它,它应该可以工作还是应该在重建之前先删除它?
    • 您需要从干净的 cx_Oracle 源代码开始,以确保不使用已构建的版本。变量需要在用户环境中设置和导出。完成构建/安装 cx_Oracle 后,取消设置不需要的变量。
    • 还是不行。我收到相同的错误消息。我如何知道哪个 Python Apache 用于运行 WSGI?无论如何,我可以将命令import cx_Oracle 作为apache 运行,这对我来说是最奇怪的。
    • 我该如何解决这个问题:我也尝试在 /usr/lib 中创建指向 $ORACLE_HOME/lib/libclntsh.so.10.1 的硬链接或符号链接,但出现权限错误,无论我从 /usr 发出多少 chmod 777 到 /usr/lib 和文件。我在另一篇博文中看到了这个解决方案,它在那里工作。
    • 已解决!!!这是该死的 SELINUX 阻止了库的执行!我已将 /usr/sbin/setenforce 0/etc/selinux/config 设置为禁用。工作正常!谢谢!
    【解决方案2】:

    有一个更好的解决方案,无需重新安装.. “将 /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

    【讨论】:

      猜你喜欢
      • 2013-12-06
      • 2013-03-16
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      相关资源
      最近更新 更多