import openslide时报 WinErr127的解决过程

首先,虽然现在这个问题解决了,但笨妞其实还是迷糊的。

原本在python上用openslide是很顺畅的,刚顺利跑完一个导入openslide的程序,然后帮同事看一个nii文件显示的问题,于是在自己的电脑上查找nii显示的方法。操作的步骤是这样的:

1. 安装了nibabel库,用pip装的,装好后,nii文件可以载入,并可以用pyplot按slice读出来,并显示。

2. 继续跑了一次我的WSI数据处理,opensilde依然顺利运行。

3. 同事想看整个nii图像,于是安装vtk,做nii三维。vtk安装时同时安装了libtiff等多个依赖库。

4. nii的三维图做出来了。

5. 继续弄自己的WSI数据处理,跑不动了,报如下错误:

Traceback (most recent call last):
  File "E:/python_projects/image_dealing/openslide_test.py", line 1, in 
    import openslide
  File "D:\Anaconda3\lib\site-packages\openslide\__init__.py", line 29, in 
    from openslide import lowlevel
  File "D:\Anaconda3\lib\site-packages\openslide\lowlevel.py", line 43, in 
    _lib = cdll.LoadLibrary('libopenslide-0.dll')
  File "D:\Anaconda3\lib\ctypes\__init__.py", line 426, in LoadLibrary
    return self._dlltype(name)
  File "D:\Anaconda3\lib\ctypes\__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 127] 找不到指定的程序。

6. 通过命令行导入openslide,系统报错:

import openslide时报 WinErr127的解决过程_第1张图片


前后只隔10分钟左右,于是怀疑中间安装vtk影响了环境变量,但环境变量对的,各种dll文件也都在。但是,而且环境变量中并没有增加vtk及相关库的路径。

在openslide的lowlevel.py文件中加入环境变量,如下:

os.environ['PATH'] = "openslide-bin-path" + ";" + os.environ['PATH']   #openslide-bin-path为openslide的bin文件夹绝对路径。

再运行,居然可以了。

看来,确实是多个路径包含openslide需要加载的dll文件。但是,安装的vtk全部库中,并没有报错的那两个dll文件。真能怀疑,可能更底层的dll冲突了。


总的来说,如果再发生原本导入正常的库突然不能导入了,首先看相关的dll是否还在,环境变量是否被修改,如果都正常,那极有可能是多个文件包含导入该库需要的dll,这时候就在导入dll的py文件下加环境变量,环境变量为库绝对路径。




你可能感兴趣的:(python)