MSYS2安装MINGW Octave后用oct2py遇__init_fltk__.oct错误126
问题背景
使用MSYS2安装的Mingw64版本Octave,通过oct2py调用plot3时出现如下错误:
Oct2PyError: Octave evaluation error:
error: opening the library 'C:\tools\msys64\mingw64\lib\octave\9.1.0\oct\x86_64-w64-mingw32_init_fltk_.oct' failed (error 126): The specified module could not be found.
error: called from:
graphics_toolkit at line 94, column 5
figure at line 96, column 7
newplot at line 120, column 10
plot3 at line 123, column 9
__init_fltk__.oct文件已存在,错误本质是动态链接库(DLL)缺失,而非.oct文件本身找不到。
解决方案
1. 确保FLTK依赖包已安装
打开MSYS2的Mingw64终端,执行以下命令安装FLTK库:
pacman -S mingw-w64-x86_64-fltk
2. 将Mingw64 bin目录加入系统PATH
Windows系统默认不会搜索MSYS2 Mingw64的DLL目录,需要手动添加:
- 临时方案(仅当前Python会话生效):在Python代码开头添加:
import os os.environ['PATH'] += ';C:\\tools\\msys64\\mingw64\\bin' - 永久方案:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量的
PATH中添加C:\tools\msys64\mingw64\bin,重启电脑后生效。
3. 切换图形工具包到Gnuplot(绕开FLTK依赖)
如果不想处理FLTK的依赖问题,可以将Octave默认图形工具包切换为Gnuplot:
- 在Python代码中临时设置:
from oct2py import octave # 切换到gnuplot工具包 octave.graphics_toolkit('gnuplot') # 再执行绘图代码 octave.plot3([1,2,3], [4,5,6], [7,8,9]) - 永久设置:编辑Octave的启动配置文件
C:\tools\msys64\mingw64\share\octave\9.1.0\m\startup\octaverc,添加一行:graphics_toolkit('gnuplot');
4. 定位具体缺失的DLL(进阶排查)
如果以上方法无效,用Dependency Walker工具打开__init_fltk__.oct,查看具体缺失的DLL文件名,再通过MSYS2的pacman安装对应包:
- 比如缺失
fltk.dll,则执行pacman -S mingw-w64-x86_64-fltk; - 缺失其他DLL,搜索
mingw-w64-x86_64-<DLL名前缀>,找到对应包安装。
内容的提问来源于stack exchange,提问作者Arsenii Raiko

