Openslide-Python导入错误

本教程将介绍Openslide-Python导入错误的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

Openslide-Python导入错误 教程 第1张

问题描述

python终端内部运行import openslide时收到以下错误

<code>Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:dev_respythonpython2_713libsite-packagesopenslide__init__.py", line 29, in <module>
 from openslide import lowlevel
  File "C:dev_respythonpython2_713libsite-packagesopenslidelowlevel.py", line 41, in <module>
 _lib = cdll.LoadLibrary('libopenslide-0.dll')
  File "C:dev_respythonpython2_713libctypes__init__.py", line 440, in LoadLibrary
 return self._dlltype(name)
  File "C:dev_respythonpython2_713libctypes__init__.py", line 362, in __init__
 self._handle = _dlopen(self._name, mode)
WindowsError: [Error 127] The specified procedure could not be found
</code>

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

使用Python3.5.3时也会出现同样的问题。有趣的是,我尝试了相同的工作流程,但使用的是32位版本(python2.732位和32位openslide二进制文件),我没有收到这个错误。但是,我更喜欢使用64位版本。

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

推荐答案

在GitHub上收到openslide-python作者的帮助后,我能够获得有效的解决方案。

问题是您的搜索路径中有多个DLL与openslide所需的名称相同。例如,在我的例子中,zlib1.dll不仅位于openslidein目录中,还位于matlab目录、gihub目录和Intel wifi目录中。当Python请求操作系统查找所需的DLL时,操作系统将返回它遇到的第一个名称匹配实例,该实例可能不是openslidein实例。

一种快速的解决方法是从openslidein目录内部启动Python。换句话说,启动命令提示符,导航到openslidein目录,输入"python",现在输入import openslide应该可以正常工作。这是可行的,因为首先会搜索启动Python的目录以查找匹配的DLL。一个更严格的解决方案是将以下内容添加到lowLev.py文件(可以在您的python安装的Libsite-Packagesopenslide目录中找到)的开头,这样就不必每次从openslidein内部启动终端

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

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

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

您可以在GitHub上查看相应的问题/用户报告here

好了关于Openslide-Python导入错误的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。