You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python导入C++扩展时出现运行时未定义符号问题求助

Python C++扩展导入时的Arrow符号未定义问题

我有一个Python包my_python_package,其中包含一个带单个函数my_ext_func的C扩展my_ext。该扩展依赖自研C库libmycpp,而libmycpp又依赖libarrow。导入扩展函数时出现如下错误:

$ python3
Python 3.8.10 (default, Jun 22 2022, 20:18:18) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from my_python_package.my_ext import my_ext_func
Traceback (most recent call last):
...
ImportError: /usr/local/lib/libmycpp.so: undefined symbol: _ZNK5arrow6Status8ToStringB5cxx11Ev

已确认信息

  • libmycpp编译链接正常,已有可正常运行的C++可执行文件
  • my_ext.so已正确链接arrow库,验证命令及输出:
ldd my_ext.so | grep arrow
libarrow.so.1200 => /lib/x86_64-linux-gnu/libarrow.so.1200 (0x00007f2f27f18000)

异常场景对比

  • 进入my_ext.so所在目录启动Python并直接导入时无报错:
$ python3
Python 3.8.10 (default, Jun 22 2022, 20:18:18) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from my_ext import my_ext_func
>>> 
  • 更新: 进入my_ext模块所在目录,通过包路径导入也正常:
$ cd ~/.local/lib/python3.8/site-packages/my_python_package/my_ext
$ python3
Python 3.8.10 (default, Jun 22 2022, 20:18:18) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from my_python_package.my_ext import my_ext_func
>>>
  • 但导入其他依赖该扩展函数的模块时会报错。

  • 更新2: 启动Python前设置LD_PRELOAD=/lib/x86_64-linux-gnu/libarrow.so.1200则一切正常,寻求问题的根本解决方法。


内容的提问来源于stack exchange,提问作者Jerome D Walker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:47:26