You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

RHEL7环境下Python3.11导入sqlite3模块出现未定义符号sqlite3_trace_v2错误的排查求助

RHEL7环境下Python3.11导入sqlite3模块出现未定义符号sqlite3_trace_v2错误的排查求助

各位好,我遇到了一个Python导入sqlite3模块的问题,想请大家帮忙排查下:

我用的是RHEL 7系统,上面的Python版本是3.11.9——这套环境不是我搭建的,基础Python安装也不是我做的,而且我没法运行yum命令,所以对系统配置的细节了解得很有限。

当我尝试在Python里导入sqlite3模块时,出现了如下错误:

ImportError: /some/path/to/python/lib/python3.11/lib-dynload/_sqlite3.cpython-311-x86_64-linux-gnu.so: undefined symbol: sqlite3_trace_v2

按照服务器管理员的指导,我用nm命令检查了这个.so文件,结果确实没找到sqlite3_trace_v2符号,只看到了:

U sqlite3_trace

我查看了系统里的SQLite相关文件:

  • /usr/lib64/libsqlite3.so.0.8.6,修改日期是2020年1月13日
  • /usr/bin/sqlite,修改日期同样是2020年1月13日

运行sqlite二进制文件显示版本是3.31.1,从日期来看这两个文件应该对应同一个版本。而Python 3.11对SQLite的版本要求是3.7.153.31.1明明已经满足了这个要求。另外,我发现/usr/include目录下既没有sqlite3.h也没有sqlite3ext.h

我现在有点搞不清状况:根据我有限的编译知识,未定义符号通常意味着编译这个lib-dynload里的_sqlite3模块时,依赖的库缺少对应的符号,但版本号明明达标了,不知道为什么会出现这种情况。

最后我还看到过一个案例,说环境变量会导致编译结果出错——安装Python的用户设置了LD_LIBRARY_PATH,里面有很多我不熟悉的路径,不知道我的问题会不会和这个有关?

我对共享库和编译相关的知识了解得比较浅,希望能得到大家的指点,谢谢!

备注:内容来源于stack exchange,提问作者Fascinating_device_000

火山引擎 最新活动