MAC El Capitan以上版本安装cx_Oracle

其实安装的步骤是非常简单的,按照其他博客的安装:
http://thelaziestprogrammer.com/sharrington/databases/oracle/install-cx_oracle-mac
你可以很快的完成。但我的版本是MacOs Sierra,无论怎么安装死活都是:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: @rpath/libclntsh.dylib.12.1
  Referenced from: /Library/Python/2.7/site-packages/cx_Oracle.so
  Reason: image not found

怎么解决这个问题?
首先,cx_Oracle.so是一个库,会动态连接很多文件,libclntsh.dylib.12.1就是其中一个,我们可以使用otool命令, -L和-l参数查看该文件的dependency:

otool -L /Library/Python/2.7/site-packages/cx_Oracle.so
/Library/Python/2.7/site-packages/cx_Oracle.so:
    @rpath/libclntsh.dylib.12.1 (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)

otool -l /Library/Python/2.7/site-packages/cx_Oracle.so
/Library/Python/2.7/site-packages/cx_Oracle.so:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
 0xfeedfacf 16777223          3  0x00           8    14       1416 0x00000085
...
Load command 9
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name @rpath/libclntsh.dylib.12.1 (offset 24)
   time stamp 2 Thu Jan  1 08:00:02 1970
      current version 0.0.0
compatibility version 0.0.0
Load command 10
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/lib/libSystem.B.dylib (offset 24)
   time stamp 2 Thu Jan  1 08:00:02 1970
      current version 1238.60.2
compatibility version 1.0.0
Load command 11
      cmd LC_FUNCTION_STARTS
  cmdsize 16
  dataoff 132856
 datasize 424
Load command 12
      cmd LC_DATA_IN_CODE
  cmdsize 16
  dataoff 133280
 datasize 32

从otool -l的命令输出里面,我们没有找到类似的打印:

Load command 13
          cmd LC_RPATH
      cmdsize 48
         path /usr/local/opt/instantclient_12_1/ (offset 12)

这表示@rpath对应的LC_RPATH没有在编译cx_Oracle.so的时候加入到包中,那么我们就手动加:

install_name_tool -add_rpath /usr/local/opt/instantclient_12_1/ /Library/Python/2.7/site-packages/cx_Oracle.so 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值