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的源码仓库拉取代码,用本地编译器重新编译:
- 安装Fortran编译器(如MinGW-w64的gfortran或Intel Fortran Compiler)
- 克隆源码后,手动用f2py编译:
生成的pyd文件替换原包中的文件即可。python -m numpy.f2py -c pyhwm14/hwm14.f90 -m hwm14
二、替代包推荐
- geospacepy:包含HWM2014的官方兼容接口,维护状态良好,导入问题少。安装命令:
使用示例:pip install geospacepyfrom geospacepy import hwm wind_data = hwm.run_hwm(2020, 7, 1, 12, 0, 0, 0, [100, 200, 300]) - hwm93py:如果论文允许使用HWM93版本,这个包稳定性极高,几乎无导入问题,安装后直接调用即可。
三、直接在Python中调用Fortran90源码(f2py方法)
步骤:
- 准备环境:安装numpy(f2py是numpy的子模块)和Fortran编译器:
- Windows:安装MinGW-w64(选择x86_64架构,勾选gfortran),或Intel oneAPI Base Toolkit
- Linux/macOS:通过包管理器安装gfortran(如
apt install gfortran或brew install gfortran)
- 编译Fortran代码:假设你的HWM14源码文件为
hwm14.f90,打开命令行进入源码目录,执行:
若有多个依赖模块,需将所有相关文件加入命令:python -m numpy.f2py -c hwm14.f90 -m hwm14python -m numpy.f2py -c module_a.f90 module_b.f90 hwm14.f90 -m hwm14 - 在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
相关产品推荐
相关产品推荐

