我已经使用
conda install h5py
安装了h5py。然而,当我import h5py
出现上述错误。这是整个错误:
Traceback (most recent call last):
File "training.py", line 12, in <module>
import h5py
File "C:\Users\colin\anaconda3\envs\py38\lib\site-packages\h5py\__init__.py", line 33, in <module>
from . import version
File "C:\Users\colin\anaconda3\envs\py38\lib\site-packages\h5py\version.py", line 15, in <module>
from . import h5 as _h5
File "h5py\h5.pyx", line 1, in init h5py.h5
ImportError: DLL load failed while importing defs: The specified procedure could not be found.
谢谢。
我尝试了
h5py
和 hdf5
版本的不同组合,甚至是最新的版本。他们都不为我工作。所以我做了以下事情,它对我有帮助:
h5py
和 hdf5
(conda uninstall
)h5py
(不是 conda install
)所以我在 conda 环境中只保留了
h5py
。
甚至认为它有一些缺点,如 takluyver 在他的帖子中提到的:https://github.com/conda-forge/h5py-feedstock/issues/103#issuecomment-1017537370
wheel 包(通过 pip 获得的)将 libhdf5 捆绑到 Wheel 中,因此用于构建 h5py 的 HDF5 和它在运行时找到的 HDF5 之间永远不应该不匹配。不过,这种方法也有其缺点 - 例如只读 S3 驱动程序在 conda-forge 中启用,但在 pip 中未启用,因为这意味着捆绑更多库。
此问题仅限于来自
h5py
通道的 hdf5
/conda-forge
组合。
Khamyl 指出了正确的开放
conda-forge
问题:https://github.com/conda-forge/h5py-feedstock/issues/103(截至撰写本文时仍处于开放状态)。
但是,无需卸载任何内容或从
conda
包管理器进行切换。
只需降级到
h5py
频道提供的最新 pkgs/main
版本,例如:
conda install h5py=3.6.0 -c pkgs/main
这也会将
hdf5
从默认通道降级为兼容版本。
我也遇到同样的错误。
所以首先使用
pip uninstall h5py
构建 h5py 还需要几个 Python 包,但大多数情况下 pip 会自动为你在构建环境中安装这些包,因此你不需要手动处理它们。
然后再次安装但使用
pip install --no-binary=h5py h5py
然后重新启动内核。