Mac系统 python 导入 ibm_db 报错 Symbol not found

报错信息

  File "/Users/mac/.jenkins/workspace/test/api_ylhq/database.py", line 70, in getDBconn
    import ibm_db
ImportError: dlopen(/Users/mac/.pyenv/versions/3.12.4/lib/python3.12/site-packages/ibm_db.cpython-312-darwin.so, 0x0002): Symbol not found: (__ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm)
  Referenced from: '/Users/mac/.pyenv/versions/3.12.4/lib/python3.12/site-packages/clidriver/lib/libdb2.dylib'
  Expected in: '/usr/lib/libstdc++.6.dylib'

用pip卸载重装ibm_db也不行,后来在项目源码发现 python-ibmdb/INSTALL.md at master · ibmdb/python-ibmdb (github.com)

里面说需要用 install_name_tool 执行命令,执行前先进入到python的这个目录:

cd  .../lib/python3.11/site-packages/clidriver/lib
install_name_tool -change /usr/local/lib/gcc/8/libstdc++.6.dylib /usr/local/Homebrew/Cellar/gcc/13.1.0/lib/gcc/13/libstdc++.6.dylib libdb2.dylib

其中 /usr/local/lib/gcc/8/libstdc++.6.dylib 是固定写死的

/usr/local/Homebrew/Cellar/gcc/13.1.0/lib/gcc/13/libstdc++.6.dylib  是你安装的gcc的目录下的libstdc++.6.dylib路径

libdb2.dylib 即  .../python3.11/site-packages/clidriver/lib 目录下的文件,也固定写死

执行,问题解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值