OpenslidePython小鬼

2024-10-06 12:24:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

<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>

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

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

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


Tags: 文件inpydevselfinitlib错误
1条回答
网友
1楼 · 发布于 2024-10-06 12:24:19

在github上得到openslide python作者的帮助后,我得到了一个有效的解决方案。

问题是在您的搜索路径中有多个dll与openslide所需的dll同名。例如,在我的示例中,zlib1.dll不仅可以在openslide\b In目录中找到,还可以在MATLAB目录、github目录和Intel wifi目录中找到。当python要求操作系统找到所需的dll时,操作系统将返回它遇到的名匹配实例,该实例可能不是openslide\bin实例。

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

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

注意:用正确的路径替换到openslide bin的路径

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

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

相关问题 更多 >