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

M1 MacOS14运行Python项目遇bjoern _ev_cleanup_start符号缺失错误求助

解决M1 MacOS 14上Python3.8+bjoern3.1.0的_ev_cleanup_start符号缺失问题

这个错误的核心原因是bjoern的编译产物没有正确链接libev库,或者运行时系统找不到匹配架构的libev符号。结合M1芯片的arm64架构特性,按以下步骤排查解决:

  • 第一步:确认Python与libev的架构一致性
    M1 Mac上可能存在x86_64(通过Rosetta运行)和arm64两种架构的环境,两者的库文件路径和编译参数不兼容:

    1. 检查Python架构:
      file $(which python3.8)
      
      输出如果包含x86_64说明是Rosetta环境,arm64则是原生架构。
    2. 检查libev架构:
      file /opt/homebrew/lib/libev.dylib
      
      如果Python是x86_64,需要重新用x86_64的brew安装libev:右键终端→显示简介→勾选「使用Rosetta打开」,然后执行:
      arch -x86_64 brew install libev
      
  • 第二步:重新编译安装bjoern,明确链接libev
    根据架构选择对应命令,确保编译时正确引入libev的头文件和库:

    • 原生arm64环境:
      pip uninstall -y bjoern
      export LDFLAGS="-L/opt/homebrew/lib -lev"
      export CFLAGS="-I/opt/homebrew/include"
      pip install --no-cache-dir bjoern==3.1.0
      
    • Rosetta x86_64环境:
      pip uninstall -y bjoern
      export LDFLAGS="-L/usr/local/lib -lev"
      export CFLAGS="-I/usr/local/include"
      arch -x86_64 pip install --no-cache-dir bjoern==3.1.0
      
  • 第三步:验证编译结果
    检查_bjoern.so是否正确链接了libev:

    otool -L /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/_bjoern.cpython-38-darwin.so
    

    输出中需包含libev.dylib的有效路径,比如/opt/homebrew/lib/libev.4.dylib(arm64)或/usr/local/lib/libev.4.dylib(x86_64)。

  • 第四步:确保运行时能找到libev
    如果验证链接正常但仍报错,可临时设置动态库路径:

    • arm64:
      export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH
      
    • x86_64:
      export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
      

    设置后再运行项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:22:03