zoukankan      html  css  js  c++  java
  • cx_Oracle在sublime text里运行遇到 ImportError错误解决办法

    如果你装完cx_Oracle之后,命令行运行没错,但是在sublime text里运行, 就遇到这个错误:

    ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
      Referenced from: /Library/Python/2.7/site-packages/cx_Oracle.so
      Reason: image not found

    那么恭喜你这是可以解决的,原因是由于某些诡异的安全性考虑,环境变量DYLD_LIBRARY_PATH在mac系统中被不正确的继承,导致cx_Oracle.so找不到libclntsh.dylib.11.1。

    那么让我们来人肉告诉cx_Oracle.so它想要的文件在哪

    install_name_tool -change 
      /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 
      $ORACLE_HOME/libclntsh.dylib.11.1 
      /Library/Python/2.7/site-packages/cx_Oracle.so

    这个命令的作用是:告诉第四行这个文件,它原以为在第二行的东西,其实在第三行。所以你需要根据上面的错误提示写第二行,再根据你自己libclntsg.dylib.11.1存放的位置写第三行,最后根据你想用的python位置写第四行。比如我用得是anaconda python,我第四行就是 /Users/qixiang/anaconda/lib/python2.7/site-packages/cx_Oracle.so 

    然后你会遇到另一个错误,类似于

    ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib
      Referenced from: /usr/local/lib/share/oracle/installclient_11_2/libclntsh.dylib.11.1
      Reason: image not found

    问题如出一辙:libclntsh.dylib.11.1找不到libnnz11.dylib,解决办法一样

      install_name_tool -change 
      /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib 
      $ORACLE_HOME/libnnz11.dylib 
      $ORACLE_HOME/libclntsh.dylib.11.1

    区别在于在此之前需要赋予修改libclntsh.dylib.11.1的权限:

    chmod 777 $ORACLE_HOME/libclntsh.dylib.11.1

    现在你已经解决了这个问题。

  • 相关阅读:
    运维人员如何最大限度避免误删除文件
    制作U盘启动安装CentOS Linux系统
    VMware克隆虚拟机后无法启动网卡
    由SecureCRT命令行快捷键谈学习思想
    SecureCRT同时发送命令到所有主机
    Linux下rz/sz安装及使用方法
    Linux下seq的使用
    linux tail命令的使用方法详解
    删除一个目录下的所有文件,但保留一个指定文件
    java基础知识回顾之java Thread类学习(十一)--join方法的理解
  • 原文地址:https://www.cnblogs.com/washa/p/5616127.html
Copyright © 2011-2022 走看看