我在运行时收到以下错误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。请注意,此错误不同于WindowsError: [Error 126] The specified module could not be found
(看问题 https://stackoverflow.com/questions/39527410/openslide-python-import-showwindows-error)当 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 时,操作系统将返回它遇到的第一个名称匹配实例,该实例可能不是 openslide\bin 实例。
一个快速修复方法是从 openslide\bin 目录中启动 python。换句话说,启动命令提示符,导航到 openslide\bin 目录,输入“python”,然后输入import openslide
应该可以正常工作。这是可行的,因为首先会在启动 python 的目录中搜索匹配的 dll。一个更严格的解决方案是将以下内容添加到开头,这样您就不必每次都从 openslide\bin 内部启动终端低级.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 的位置添加到环境路径的开头,确保该文件夹位于搜索层次结构的顶部,因此会在其他名称匹配实例之前找到。
您可以在github上查看相应的issue/用户报告here https://github.com/openslide/openslide-python/issues/23
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)