Arm架构macos无法正常使用wntr工具箱解决中方案

Posted by TheD Blog on July 30, 2025

出错定位

arm架构的MacBook能够正常安装1.3.2版本的USEPA/WNTR工具箱,但在实际使用过程中会出现闪退情况。经定位错误的原因是wntr/epanet/toolkit.py中载入epanet动态链接库时出错:

if float(version) == 2.0:  
    libname = libepanet.replace('epanet22.','epanet20.')  
    if 'arm' in platform.platform():  
        raise NotImplementedError('ARM-based processors not supported for version 2.0 of EPANET. Please use version=2.2')  
else:  
    libname = libepanet  
libname = resource_filename(__name__, libname)  
if os.name in ["nt", "dos"]:  
    self.ENlib = ctypes.windll.LoadLibrary(libname)  
else:  
    self.ENlib = ctypes.cdll.LoadLibrary(libname)   # 导致闪退的代码  

错误原因

经查这一代码载入的是wntr/epanet/libepanet/darwin-arm/libepanet2.dylib动态链接库,这一链接库是核心的EPANET计算引擎,WNTR依赖这一链接库来进行计算。

解决方案

Open Water Analytics组织在维护OpenWaterAnalytics/EPANET这一项目,它支持arm架构的macOS。clone后用如下方式编译:

mkdir build  
cd build  
cmake ..  
cmake --build . --config Release  

build/lib目录中有libepanet2.dylib文件,用这一文件替换WNTR中自带的链接库后即可正常计算。