报错信息
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 目录下的文件,也固定写死
执行,问题解决!