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

pyhwm14包导入报错求助:DLL加载失败问题解决及替代方案

解决pyhwm14导入错误、替代方案及Python调用Fortran90源码指南

一、修复pyhwm14的DLL加载失败问题

  • 匹配Python版本:你看到的hwm14.cp310-win_amd64.pyd是针对Python3.10编译的,必须使用Python3.10环境运行,版本不兼容会直接触发DLL加载失败。可以用conda创建对应环境:
    conda create -n py310 python=3.10
    conda activate py310
    pip install pyhwm2014
    
  • 安装依赖运行库:Fortran编译的pyd文件通常依赖以下组件:
    • Visual C++ Redistributable for Visual Studio 2019(x64版本)
    • Intel Fortran Runtime(若源码由Intel编译器编译)
      安装对应组件后重启Python环境再尝试导入。
  • 手动添加包路径:如果pip安装的包路径未被Python识别,在导入前手动添加路径:
    import sys
    # 替换为你实际的pyhwm2014安装目录,比如Lib/site-packages/pyhwm2014
    sys.path.append("C:/Users/你的用户名/AppData/Local/Programs/Python/Python310/Lib/site-packages/pyhwm2014")
    from pyhwm2014.pyhwm14 import HWM14, HWM14Plot
    
  • 重新编译源码:从pyhwm14的源码仓库拉取代码,用本地编译器重新编译:
    1. 安装Fortran编译器(如MinGW-w64的gfortran或Intel Fortran Compiler)
    2. 克隆源码后,手动用f2py编译:
      python -m numpy.f2py -c pyhwm14/hwm14.f90 -m hwm14
      
      生成的pyd文件替换原包中的文件即可。

二、替代包推荐

  • geospacepy:包含HWM2014的官方兼容接口,维护状态良好,导入问题少。安装命令:
    pip install geospacepy
    
    使用示例:
    from geospacepy import hwm
    wind_data = hwm.run_hwm(2020, 7, 1, 12, 0, 0, 0, [100, 200, 300])
    
  • hwm93py:如果论文允许使用HWM93版本,这个包稳定性极高,几乎无导入问题,安装后直接调用即可。

三、直接在Python中调用Fortran90源码(f2py方法)

步骤:

  1. 准备环境:安装numpy(f2py是numpy的子模块)和Fortran编译器:
    • Windows:安装MinGW-w64(选择x86_64架构,勾选gfortran),或Intel oneAPI Base Toolkit
    • Linux/macOS:通过包管理器安装gfortran(如apt install gfortran或brew install gfortran)
  2. 编译Fortran代码:假设你的HWM14源码文件为hwm14.f90,打开命令行进入源码目录,执行:
    python -m numpy.f2py -c hwm14.f90 -m hwm14
    
    若有多个依赖模块,需将所有相关文件加入命令:
    python -m numpy.f2py -c module_a.f90 module_b.f90 hwm14.f90 -m hwm14
    
  3. 在Python中调用:编译完成后,直接导入生成的模块并调用子程序:
    import hwm14
    # 假设Fortran子程序为calc_wind,参数需匹配Fortran定义的类型
    u, v, w = hwm14.calc_wind(year=2020, month=7, day=1, hour=12, lat=0, lon=0, alt=[100,200])
    

注意事项:

  • Fortran子程序的参数类型要和Python传入的类型匹配(比如整数、浮点数、数组),否则会报错。
  • 若Fortran代码中有MODULE,编译时需确保所有依赖模块都被包含。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:23:12