我正在尝试将scanpy导入miniconda3的jupyter笔记本中。但是,当我尝试导入scanpy时,它给出了有关hdf5extension dll的ImportError。但是,当我查看包 tables 的目录时,我可以看到两个名为hdf5.dll和hdf5extension.cp37-win_amd64.pyd(https://gyazo.com/a7d5a9d7d28756a8d82bc060b33b91ca)的文件。我以为这些是应该导入的文件,但是我不明白导入有什么问题。
我以前在此系统上使用过scanpy,但是在我通过conda安装h5py后开始出现问题(不知道如果通过conda安装scanpy会自动包含h5py)。因此,首先我卸载了h5py,但无法正常工作。卸载并重新安装了miniconda3两次,但均不起作用。 手动设置$ PATH变量也无济于事。
因此,我查看了回溯中引用的file.py,并发现 tables 目录中应该有一个文件。我找到了文件,并以为它们的名称可能不正确,因此我尝试更改名称,但也没有用。无法将python从3.7.1降级到3.6.6,也没有用python 3.6.6在conda中创建新的env并安装所有必需的软件包。
在带有miniconda3安装程序的conda 4.5.12的Windows 7 64位上工作。
Python 3.6.6 |由conda-forge打包| (默认值,2018年7月26日,11:48:23)[MSC v .1900 64位(AMD64)]在Win32上 输入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。
导入scanpy
回溯(最近通话最近一次):
文件“ C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ scanpy__init __。py”中的第1行,
来自。导入工具为tl
第12行中的文件“ C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ scanpy \ tools__init __。py”
从.sim导入sim
文件
中的第19行,文件“ C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ scanpy \ tools \ sim.py”from .. import readwrite
文件“ C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ scanpy \ readwrite.py”,第9行 在
导入表
文件
中的文件“ C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ tables__init __。py”,第131行从.file导入文件,open_file,copy_file
文件
中的“ C:\ Miniconda3 \ envs \ py36 \ lib \ site-packages \ tables \ file.py”,第35行来自。导入hdf5extension
ImportError:DLL加载失败:找不到指定的过程。
答案 0 :(得分:1)
我遇到了同样的问题,两次。
这似乎是Windows特定的问题。我的第一个解决方案是更新我的Visual Studio版本,该版本随附了C-Build Tools,可能需要以某种方式运行scanpy(?)。在一段时间内效果很好。
几个星期后,我再次遇到相同的ImportError。这次唯一有用的是使用旧版本的h5py(2.8)。设置新的虚拟环境或重置Miniconda软件包无济于事,specifying the hdf5-DLL save location作为Windows变量也无济于事。
我的建议是h5py 2.9版中的新hdf5库尚未与Microsoft VS的当前C编译器兼容。
希望这会有所帮助!
答案 1 :(得分:0)
我在使用scanpy时遇到了同样的麻烦,我多次卸载了anaconda 我的问题如下:
>>> import scanpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\software\Anaconda\lib\site-packages\scanpy\__init__.py", line 32, in <module>
from . import tools as tl
File "C:\software\Anaconda\lib\site-packages\scanpy\tools\__init__.py", line 12, in <module>
from ._sim import sim
File "C:\software\Anaconda\lib\site-packages\scanpy\tools\_sim.py", line 24, in <module>
from .. import readwrite
File "C:\software\Anaconda\lib\site-packages\scanpy\readwrite.py", line 10, in <module>
import tables
File "C:\Users\xiaokang\AppData\Roaming\Python\Python36\site-packages\tables\__init__.py", line 99, in <module>
from .utilsextension import (
ImportError: DLL load failed: 找不到指定的模块。
最后,我卸载了表包并重新安装了表包,然后对我来说很好
答案 2 :(得分:0)
遇到了类似的问题,搞了半天。
就这一点而言,问题出在 tables
包中,至少对我来说是这样。
tables
包已损坏。我通过 conda 卸载它并删除剩余的目录(必要的,所有以tables
命名的目录;路径可以从错误信息中获得)
然后我通过“pip”重新安装,因为我的“conda”频道没有它。
有趣的是,'pip' 使我感到温暖,我的 h5py(2.8.0) 已过时,并建议我将其更新到 2.10.0 以用于 scanpy。 (事实上,scanpy 可以很好地工作)
如果你这样做了,恭喜,tables
又坏了。
似乎 h5py(2.10.0) 也会安装 tables
(但它有 win10 中的错误)
另外,如果h5py得到ImportError: DLL load failed
,也应该用类似的管道重新安装(手动删除)。
无论如何,scanpy 可以在 win10 scanpy==1.7.1 h5py==2.8.0 tables==3.4.4
中使用。
如果最后重新安装 tables
,也许 h5py 2.10.0 也可以工作。