4

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>

我的操作系统是 Windows 64 位,我使用的是 Python 2.7.13(64 位)。我安装了 OpenSlide 二进制文件(2016-7-17 64 位版本)并将相应的 bin 文件夹添加到我的系统路径中。然后我使用 pip 安装了 python-openslide。请注意,此错误与未将 Windows 二进制文件添加到系统路径时发生的WindowsError: [Error 126] The specified module could not be found请参阅问题)不同。

使用 Python 3.5.3 时也会出现同样的问题。有趣的是,除了 32 位版本(python 2.7 32 位和 32 位 openslide 二进制文件)外,我尝试了相同的工作流程,但没有收到此错误。但是,我更喜欢使用 64 位版本。

任何帮助将不胜感激。谢谢!

4

1 回答 1

8

在 github 上获得 openslide-python 作者的帮助后,我得到了一个可行的解决方案。

问题是您的搜索路径中有多个 dll 与 openslide 所需的名称相同。以我为例,zlib1.dll不仅位于 openslide\bin 目录中,而且还位于 MATLAB 目录、github 目录和 Intel wifi 目录中。当 python 要求操作系统查找所需的 dll 时,操作系统将返回它遇到的第一个名称匹配实例,它可能不是 openslide\bin 实例。

一个快速的解决方法是从 openslide\bin 目录中启动 python。换句话说,启动命令提示符,导航到 openslide\bin 目录,键入“python”,现在键入import openslide应该可以正常工作了。这是有效的,因为首先搜索启动 python 的目录以查找匹配的 dll。一个更严格的解决方案是,将以下内容添加到lowlevel.py文件的开头(可以在您的 Lib\site-packages\openslide 目录中找到)蟒蛇安装)

os.environ['PATH'] = "path-to-openslide-bin" + ";" + os.environ['PATH']

注意:将 path-to-openslide-bin 替换为正确的路径

每次您键入import openslidelowlevel.py 时都会运行它,它会尝试加载适当的 dll。上面的代码行将 dll 的位置添加到环境路径的开头,以确保该文件夹位于搜索层次结构的顶部,因此将在其他名称匹配实例之前找到。

你可以在这里查看github上对应的问题/用户报告

于 2017-05-22T21:24:24.127 回答