在Foundry代码库中用Keras加载h5文件遇h5py依赖问题求助
在Foundry代码库中使用Keras加载H5文件时遇到h5py不可用的问题
问题场景
我在Foundry代码库中尝试用Keras加载H5模型文件,代码如下:
import os import pkg_resources from keras.models import load_model def m_path(model_id): MODEL_PATH = pkg_resources.resource_filename('myproject', 'models/') return os.path.join(MODEL_PATH, f'lstm_{model_id}.h5') model_path_gnd = m_path('V1') model_gnd = load_model(model_path_gnd)
运行后抛出如下错误:
[module version: 1.1004.0] ImportError: Filepath looks like a hdf5 file but h5pyis not available. filepath=/app/work-dir/environment/SYMLINKS/site-packages/myproject/models/lstm_gnd.h5 File "/app/work-dir/environment/SYMLINKS/site-packages/keras/src/saving/legacy/save.py", line 244, in load_model raise ImportError( ImportError: Filepath looks like a hdf5 file but h5pyis not available. filepath=/app/work-dir/environment/SYMLINKS/site-packages/myproject/models/lstm_gnd.h5
我已经在依赖yaml文件中声明了keras和h5py,并且反复添加、移除过h5py依赖,但问题依旧存在。
可能的解决方案
明确指定兼容的依赖版本
Foundry环境的依赖隔离机制可能导致版本不兼容,建议在yaml中明确指定与Keras匹配的h5py版本,例如:dependencies: - keras==2.15.0 - h5py==3.10.0避免使用模糊版本范围,防止拉取到不兼容的依赖版本。
验证h5py的实际安装状态
在代码开头添加调试代码,确认h5py是否能被正常导入:try: import h5py print(f"h5py版本:{h5py.__version__}") except ImportError as e: print(f"导入h5py失败:{e}")如果输出导入失败,说明依赖未被正确安装到当前模块环境,需要检查是否重新构建了Foundry模块环境,或者是否存在环境缓存未更新的情况。
检查模型文件路径的有效性
打印路径并验证文件是否存在,排除资源文件未正确打包的问题:print(f"模型路径:{model_path_gnd}") print(f"文件是否存在:{os.path.exists(model_path_gnd)}")若文件不存在,需要确认模型文件是否被正确打包到Foundry模块的
models目录下。尝试使用绝对路径加载模型
暂时替换路径获取方式,用绝对路径测试是否能加载模型,排除路径解析异常:model_path_gnd = "/app/work-dir/environment/SYMLINKS/site-packages/myproject/models/lstm_V1.h5" model_gnd = load_model(model_path_gnd)如果此方式成功,说明
pkg_resources的路径解析在Foundry环境中存在问题,需要调整资源文件的打包逻辑。
内容的提问来源于stack exchange,提问作者Tellos
相关产品推荐
相关产品推荐

