Openslide-python导入错误
Openslide-python import error
当 运行 import openslide
来自 python 终端
时,我收到以下错误
<code>Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\dev_res\python\python2_713\lib\site-packages\openslide\__init__.py", line 29, in <module>
from openslide import lowlevel
File "C:\dev_res\python\python2_713\lib\site-packages\openslide\lowlevel.py", line 41, in <module>
_lib = cdll.LoadLibrary('libopenslide-0.dll')
File "C:\dev_res\python\python2_713\lib\ctypes\__init__.py", line 440, in LoadLibrary
return self._dlltype(name)
File "C:\dev_res\python\python2_713\lib\ctypes\__init__.py", line 362, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 127] The specified procedure could not be found
</code>
我的 OS 是 Windows 64 位,我使用的是 Python 2.7.13(64 位)。我安装了 OpenSlide 二进制文件(2016-7-17 64 位版本)并将相应的 bin 文件夹添加到我的系统路径。然后我使用 pip 安装了 python-openslide。请注意,此错误不同于 WindowsError: [Error 126] The specified module could not be found
(see question),后者在 windows 二进制文件未添加到系统路径时发生。
使用 Python 3.5.3 时出现同样的问题。有趣的是,我尝试了相同的工作流程,除了 32 位版本(python 2.7 32 位和 32 位 openslide 二进制文件),但我没有收到此错误。不过,我更愿意使用 64 位版本。
如有任何帮助,我们将不胜感激。谢谢!
在 github 上得到 openslide-python 作者的帮助后,我得到了一个可行的解决方案。
问题是您的搜索路径中有多个 dll 与 openslide 所需的同名。例如,在我的例子中,zlib1.dll 不仅在 openslide\bin 目录中而且在 MATLAB 目录、github 目录和 Intel wifi目录。当 python 要求操作系统查找所需的 dll 时,操作系统将 return 它遇到的第一个名称匹配实例,它可能不是 openslide\bin 实例。
快速修复是从 openslide\bin 目录中启动 python。换句话说,启动命令提示符,导航到 openslide\bin 目录,键入 "python",现在键入 import openslide
应该可以正常工作。这是有效的,因为首先搜索启动 python 的目录以查找匹配的 dll。一个更严格的解决方案可以防止您每次都必须从 openslide\bin 内部启动终端是将以下内容添加到 lowlevel.py 文件的开头(可以在 python 安装的 Lib\site-packages\openslide 目录中找到)
os.environ['PATH'] = "path-to-openslide-bin" + ";" + os.environ['PATH']
注意:将 path-to-openslide-bin 替换为正确的路径
每次您键入 import openslide
lowlevel.py 都是 运行,它会尝试加载适当的 dll。上面的代码行将 dll 的位置添加到环境路径的开头,以确保此文件夹位于搜索层次结构的顶部,因此将在其他名称匹配实例之前找到。
您可以在githubhere
上查看相应的issue/user报告
当 运行 import openslide
来自 python 终端
<code>Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\dev_res\python\python2_713\lib\site-packages\openslide\__init__.py", line 29, in <module>
from openslide import lowlevel
File "C:\dev_res\python\python2_713\lib\site-packages\openslide\lowlevel.py", line 41, in <module>
_lib = cdll.LoadLibrary('libopenslide-0.dll')
File "C:\dev_res\python\python2_713\lib\ctypes\__init__.py", line 440, in LoadLibrary
return self._dlltype(name)
File "C:\dev_res\python\python2_713\lib\ctypes\__init__.py", line 362, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 127] The specified procedure could not be found
</code>
我的 OS 是 Windows 64 位,我使用的是 Python 2.7.13(64 位)。我安装了 OpenSlide 二进制文件(2016-7-17 64 位版本)并将相应的 bin 文件夹添加到我的系统路径。然后我使用 pip 安装了 python-openslide。请注意,此错误不同于 WindowsError: [Error 126] The specified module could not be found
(see question),后者在 windows 二进制文件未添加到系统路径时发生。
使用 Python 3.5.3 时出现同样的问题。有趣的是,我尝试了相同的工作流程,除了 32 位版本(python 2.7 32 位和 32 位 openslide 二进制文件),但我没有收到此错误。不过,我更愿意使用 64 位版本。
如有任何帮助,我们将不胜感激。谢谢!
在 github 上得到 openslide-python 作者的帮助后,我得到了一个可行的解决方案。
问题是您的搜索路径中有多个 dll 与 openslide 所需的同名。例如,在我的例子中,zlib1.dll 不仅在 openslide\bin 目录中而且在 MATLAB 目录、github 目录和 Intel wifi目录。当 python 要求操作系统查找所需的 dll 时,操作系统将 return 它遇到的第一个名称匹配实例,它可能不是 openslide\bin 实例。
快速修复是从 openslide\bin 目录中启动 python。换句话说,启动命令提示符,导航到 openslide\bin 目录,键入 "python",现在键入 import openslide
应该可以正常工作。这是有效的,因为首先搜索启动 python 的目录以查找匹配的 dll。一个更严格的解决方案可以防止您每次都必须从 openslide\bin 内部启动终端是将以下内容添加到 lowlevel.py 文件的开头(可以在 python 安装的 Lib\site-packages\openslide 目录中找到)
os.environ['PATH'] = "path-to-openslide-bin" + ";" + os.environ['PATH']
注意:将 path-to-openslide-bin 替换为正确的路径
每次您键入 import openslide
lowlevel.py 都是 运行,它会尝试加载适当的 dll。上面的代码行将 dll 的位置添加到环境路径的开头,以确保此文件夹位于搜索层次结构的顶部,因此将在其他名称匹配实例之前找到。
您可以在githubhere
上查看相应的issue/user报告