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

安装Python的SPAMS工具包后测试遇dlopen符号缺失ImportError错误

Fixing ImportError: Symbol not found: _GOMP_critical_end with SPAMS Python Package

这个错误我之前踩过坑!本质是SPAMS编译时依赖OpenMP,但macOS默认的clang编译器不支持OpenMP,导致生成的_spams_wrap.so库缺少了关键的OpenMP符号。下面是亲测有效的解决步骤:

1. 安装支持OpenMP的编译器

首先用Homebrew安装gcc(gcc原生支持OpenMP,不像clang需要额外配置):

brew install gcc

安装完成后,用gcc --version或者gcc-<你的版本号> --version确认安装成功,比如可能是gcc-13

2. 重新编译并安装SPAMS

先把之前安装的SPAMS卸载干净:

pip uninstall -y spams

然后用gcc作为编译器重新安装,这里分两种情况:

  • 如果是直接用pip安装:
    CC=gcc-13 CXX=g++-13 pip install spams --no-cache-dir
    
  • 如果是从源码编译:
    先下载SPAMS源码并进入目录,然后执行:
    CC=gcc-13 CXX=g++-13 python setup.py install
    

⚠️ 注意:把gcc-13替换成你实际安装的gcc版本号,比如gcc-12

3. 验证安装是否成功

打开Python终端,输入:

import spams

如果没有抛出错误,就说明问题解决啦!

额外提醒

  • 如果你用的是虚拟环境,一定要在激活虚拟环境的状态下执行上述命令,确保环境变量生效。
  • 加上--no-cache-dir是为了避免pip使用之前编译的缓存文件,保证用新的编译器重新编译。

内容的提问来源于stack exchange,提问作者schrodingercat

火山引擎 最新活动