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 <module>
    import openslide
  File "D:\Anaconda3\lib\site-packages\openslide\__init__.py", line 29, in <module>
    from openslide import lowlevel
  File "D:\Anaconda3\lib\site-packages\openslide\lowlevel.py", line 43, in <module>
    _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,系統報錯:



前後只隔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文件下加環境變量,環境變量爲庫絕對路徑。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章