我正在尝试使用miniconda3导入scanpy以用于jupyter笔记本。但是,当我尝试导入scanpy时,它会提供有关hdf5extension dll的ImportError。当我查看包表的目录时,我可以看到两个名为hdf5.dll和hdf5extension.cp37-win_amd64.pyd(https://gyazo.com/a7d5a9d7d28756a8d82bc060b33b91ca)的文件。我假设这些是应该导入的文件,但我不明白导入的问题。
我之前在这个系统上使用过scanpy,但是在我通过conda安装h5py之后就出现了问题(如果你通过conda安装了scanpy,则不知道会自动包含h5py)。所以首先我卸载了h5py,但是没有用。卸载并重新安装miniconda3两次,这也没有用。手动设置$ PATH变量也无济于事。
然后我查看了traceback中引用的file.py,并发现tables目录中应该有一个文件。我发现了这些文件,并认为它们可能是错误的命名,所以我尝试更改名称,这也没有用。将python从3.7.1降级到3.6.6不起作用,也没有使用python 3.6.6在conda中创建新的env并安装所有必需的包。
使用带有miniconda3安装程序的conda 4.5.12在64位Windows 7上运行。
Python 3.6.6 |由conda-forge打包| (默认情况下,2018年7月26日,11:48:23)win32上的[MSC v .1900 64 bit(AMD64)]输入“help”,“copyright”,“credits”或“license”以获取更多信息。
import scanpy
Traceback(最近一次调用最后一次):
文件“”,第1行,文件“C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ scanpy__init __。py”,第11行,
来自。导入工具为tl
文件“C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ scanpy \ tools__init __。py”,第12行,in
来自.sim import sim
文件“C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ scanpy \ tools \ sim.py”,第19行,in
from .. import readwrite
文件“C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ scanpy \ readwrite.py”,第9行,in
导入表
文件“C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ tables__init __。py”,第131行,in
来自.file import File,open_file,copy_file
文件“C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ tables \ file.py”,第35行,
来自。 import hdf5extension
ImportError:DLL加载失败:找不到指定的过程。
我遇到了同样的问题,两次。
这似乎是Windows特有的问题。我的第一个解决方案是更新我的Visual Studio版本,它带有可能需要以某种方式运行scanpy的C-Build Tools(?)。这工作好一段时间了。
几周后,我再次遇到了相同的ImportError。这一次唯一有用的是使用旧版本的h5py(2.8)。设置新的虚拟环境或重置Miniconda软件包没有帮助,specifying the hdf5-DLL save location也没有作为Windows变量。
我的建议是h5py版本2.9中的新hdf5库与Microsoft VS的当前C编译器尚不兼容。
希望这可以帮助!