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

Python3.12下f2py运行fib示例报错:系统找不到指定文件

解决Python3.12+NumPy2.0下f2py meson后端WinError2文件未找到问题

问题核心定位

Python3.12移除了distutils组件,f2py默认切换到meson后端,但在Windows+MinGW环境下,meson可执行文件的路径识别存在bug,导致subprocess调用时executable参数为None,触发WinError2"系统找不到指定文件"的错误。

分步解决方案

1. 显式指定meson可执行文件路径

  • 先确认meson已安装,执行:
    pip list | findstr meson
    
    未安装则执行:pip install meson ninja
  • 找到meson.exe的绝对路径,通常在Python的Scripts目录下,示例路径:
    C:\Users\<你的用户名>\AppData\Local\Programs\Python\Python312\Scripts\meson.exe
  • 编译时显式指定路径:
    f2py --meson-executable "C:\Users\<你的用户名>\AppData\Local\Programs\Python\Python312\Scripts\meson.exe" -c fib1.f -m fib
    

2. 修复MinGW环境变量优先级

  • 将MinGW64的bin目录(如C:\mingw64\bin)移到系统PATH环境变量的最顶端,避免和Windows自带工具(如link.exe)冲突
  • 重启MinGW64终端,依次验证以下命令能正常输出版本信息:
    gfortran --version
    gcc --version
    meson --version
    ninja --version
    

3. 降级NumPy到兼容稳定版

NumPy2.0为大版本更新,和f2py的meson后端可能存在兼容性问题,可尝试降级到1.26.x系列:

pip install numpy==1.26.4 --force-reinstall

之后重新执行编译命令:

f2py -c fib1.f -m fib

4. 手动用meson构建绕开f2py的路径bug

  • 先让f2py生成meson构建模板:
    f2py --only-generate -c fib1.f -m fib
    
  • 进入生成的fib目录,创建mingw-cross-file.txt,内容如下:
    [host_machine]
    system = 'windows'
    cpu_family = 'x86_64'
    cpu = 'x86_64'
    endian = 'little'
    
    [properties]
    c_compiler = 'gcc'
    cpp_compiler = 'g++'
    fortran_compiler = 'gfortran'
    
  • 手动执行meson构建命令:
    meson setup build --cross-file mingw-cross-file.txt
    ninja -C build
    
  • 构建完成后,build目录下会生成对应的.pyd模块文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:33:10