2016-08-18 589 views
1

我有一些麻煩從python從scipy集成子模塊。 我有一個64位體系結構,根據python解釋器的第一行(參見下文),我似乎也在使用64位版本的Python和Anaconda。Python scipy模塊導入錯誤,由於缺少._ufuncs dll

下面的問題(我剛寫了最少的代碼顯示發生了什麼)


Python 3.4.3 |Anaconda 2.3.0 (64-bit)| (default, Mar 6 2015, 12:06:10) [MSC v.1600 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import scipy 
>>> import scipy.integrate 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\*********\Anaconda3\lib\site-packages\scipy\integrate\__init__.py", line 55, in <module> 
    from .quadrature import * 
    File "C:\Users\*********\Anaconda3\lib\site-packages\scipy\integrate\quadrature.py", line 10, in <module> 
    from scipy.special.orthogonal import p_roots 
    File "C:\Users\*********\Anaconda3\lib\site-packages\scipy\special\__init__.py", line 636, in <module> 
    from ._ufuncs import * 
ImportError: DLL load failed: Le module spécifié est introuvable. 

同樣與進口scipy.special

正如你可以看到發生SciPy的可以導入,但是scipy.integrate會產生錯誤。奇怪的是,在文件夾 ... \ lib \ site-packages \ scipy \ special中,會出現._ufuncs.pyd。 另外,我經常使用其他用途的作品,而且作品通常都很好。

我使用的是版本0.18.0的scipy和pip 1.8.1。 我試圖用conda重新安裝scipy,但這似乎沒有改變任何東西。

看來,該DLL無法找到。我在互聯網上發現了幾個帖子(包括一個建議在C:\ Windows \ SysWOW64下載「libmmd.dll」的帖子),但似乎沒有任何工作。我的猜測是,這仍然是p-32-64位兼容性,因爲這是python中最常用的pb,而且我記得在幾個月前第一次安裝所有軟件時都有很大的pb。

因此,跟上最初的問題,有沒有辦法知道哪個版本(32位或64位)的每個包或DLL是有效地安裝/加載? 你有另一個想法,爲什麼我得到這個錯誤信息?

謝謝你的答案,這個問題是相當令人沮喪...

回答

1

我通過以下步驟解決:

  1. 安裝MKL

  2. 對於我的情況,我使用Dependency Wakler檢查了\scipy\special\_ufuncs.cp36-win_amd64.pyd。發現我錯過了LIBIFCOREMD.DLLLIBMMD.DLL。我通過安裝Intel Distribution for Python解決了這個問題。英特爾的Python發行版實際上是Python 3.5的特殊版本。它包含很多所需的DLL。安裝Intel Distribution for Python後,請轉至path_to_Intel_Distribution_for_Python\Library\bin(在我的電腦上是C:\IntelPython3\Library\bin),並將所有文件夾和文件複製到path_to_your_default_python\Library\bin(在我的電腦上是C:\Anaconda3\Library\bin)。 capture (根據this answer忽略其他丟失的dll)。

然後問題解決了。

PS。也許有時在path_to_Intel_Distribution_for_Python\Library\include\文件也需要?

PPS。如果不再需要,可以卸載Intel Distribution for Python。

PPPS。更簡單的方法是使用輪子。 Unofficial Windows Binaries for Python Extension Packages。但我喜歡用conda update --all來更新軟件包......然後一切搞砸了......

+0

這解決了我的問題(使用Python 3.5.2的Windows 10和Anaconda 3)。沒有嘗試'conda更新 - 所有'部分。謝謝! – Johan