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

Mac下Python虚拟环境导入Scipy报错:__gfortran_stop_numeric_f08符号未找到

解决Mac虚拟环境中Scipy导入时的__gfortran_stop_numeric_f08符号缺失问题

问题原因

Mac系统中MATLAB自带的libgfortran.3.dylib版本过旧,缺少Scipy所需的__gfortran_stop_numeric_f08符号,且系统动态库搜索路径优先指向了MATLAB的库目录,导致Scipy加载时调用错误的库文件。

解决方案

方法1:临时调整动态库路径(单次生效)

  1. 激活虚拟环境后,先确认通过Homebrew安装的gcc库路径(以gcc 12为例,版本号可根据实际安装情况修改):
    ls /usr/local/opt/gcc/lib/gcc/
    
  2. 将gcc的库路径添加到DYLD_LIBRARY_PATH最前面:
    export DYLD_LIBRARY_PATH="/usr/local/opt/gcc/lib/gcc/12:$DYLD_LIBRARY_PATH"
    
  3. 重新运行Python并尝试导入Scipy即可。

方法2:永久修改虚拟环境激活脚本(长期生效)

  1. 打开虚拟环境的激活脚本:
    nano /Users/mshafer/Desktop/PLAYGROUND/CODE_TOEPLITZ/uavrt_venv/bin/activate
    
  2. 在文件末尾添加以下代码,设置动态库路径优先级:
    # 保存原始DYLD路径,避免影响其他程序
    export ORIGINAL_DYLD_PATH=$DYLD_LIBRARY_PATH
    # 将gcc的gfortran库路径放到最前面
    export DYLD_LIBRARY_PATH="/usr/local/opt/gcc/lib/gcc/12:$DYLD_LIBRARY_PATH"
    
  3. 找到脚本中的deactivate()函数,在函数内添加恢复原始路径的代码:
    if [ -n "$ORIGINAL_DYLD_PATH" ]; then
        export DYLD_LIBRARY_PATH=$ORIGINAL_DYLD_PATH
        unset ORIGINAL_DYLD_PATH
    fi
    
  4. 保存退出后,重新激活虚拟环境即可生效。

方法3:从源码重新编译Scipy

如果上述方法无法解决,可尝试强制从源码编译适配当前系统库的Scipy:

  1. 卸载现有Scipy:
    pip uninstall -y scipy
    
  2. 确保已安装gcc(包含gfortran):
    brew install gcc
    
  3. 从源码安装Scipy:
    pip install scipy --no-binary :all:
    

补充说明

Linux环境下无此问题,是因为Linux的动态库搜索机制与Mac不同,MATLAB的库不会被自动加入系统全局搜索路径,因此不会与Scipy依赖的库产生冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:48