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

使用gfortran+f2py编译后在Jupyter导入.so文件遇符号缺失错误

Macports安装Python/GCC后,f2py编译的.so文件在Jupyter导入时缺失gfortran符号
  • 环境:搭载Ventura 13.6.9系统的iMac,通过Macports安装Python与GCC
  • 核心问题:使用gfortran和f2py编译Fortran代码生成*.so文件后,在Jupyter中导入时报错Symbol not found: __gfortran_compare_string(Python 3.12环境下具体报错为__gfortran_set_args)
  • 已尝试版本:gcc11、gcc12、gcc14以及python3.11、3.12、3.13均存在相同问题,仅Python 3.7可正常配合f2py使用

极简复现案例

1. Fortran代码文件 Trial.f

program Trial
   call Check()
  end
  subroutine Check()
    print *, 'Hello World'
   return
  end

2. 编译命令(两种方式结果一致)

f2py --fcompiler=/opt/local/bin/gfortran-mp-14 -L/opt/local/lib/gcc14  -c -m Trial_Py Trial.f
f2py -c -m Trial_Py Trial.f

3. f2py识别gfortran的特殊处理

必须在PATH路径下的my_bin文件夹中创建符号链接:

ln -s /opt/local/bin/gfortran-mp-14 /path/to/my_bin/gfortran

否则即便/opt/local/bin在PATH中,f2py仍无法找到gfortran-mp-14

4. Python 3.12环境Jupyter导入错误信息

执行导入语句:

import Trial_Py

报错:

ImportError                        Traceback (most recent call last)
Cell In[1], line 1
----> 1 import Trial_Py

ImportError: dlopen(/Users/dany/TMP/Trial_Py.cpython-312-darwin.so, 0x0002): Symbol not found: __gfortran_set_args
Referenced from: <6F42A5D4-A263-370E-9CA6-B0968DE5C17D> /Users/dany/TMP/Trial_Py.cpython-312-darwin.so
Expected in:      unknown

当前libgfortran文件状态

所有相关libgfortran文件均指向同一份文件:

-rwxr-xr-x  1 root  wheel  1778544  Aug 12  2024 /opt/local/lib/libgcc/libgfortran.5.dylib
lrwxr-xr-x  1 root  wheel  19           Aug 12  2024 /opt/local/lib/libgcc/libgfortran.dylib -> libgfortran.5.dylib
lrwxr-xr-x  1 root  wheel  19           Aug 12  2024 /opt/local/lib/gcc14/libgfortran.dylib -> libgfortran.5.dylib
lrwxr-xr-x  1 root  wheel  41           Aug 12  2024 /opt/local/lib/gcc14/libgfortran.5.dylib -> /opt/local/lib/libgcc/libgfortran.5.dylib

环境变量LIBRARY_PATH为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:33:18