在Windows上安装Theano - DLL加载失败

时间:2015-12-29 09:45:57

标签: python dll installation theano pdb

我正在尝试在Windwos 8上安装Theano

已遵循these步骤。

我尝试使用:

进行测试
import numpy as np
import time
import theano

print('blas.ldflags=', theano.config.blas.ldflags)
A = np.random.rand(1000, 10000).astype(theano.config.floatX)
B = np.random.rand(10000, 1000).astype(theano.config.floatX)
np_start = time.time()
AB = A.dot(B)
np_end = time.time()
X, Y = theano.tensor.matrices('XY')
mf = theano.function([X, Y], X.dot(Y))
t_start = time.time()
tAB = mf(A, B)
t_end = time.time()
print("NP time: %f[s], theano time: %f[s] (times should be close when run on CPU!)" % (
np_end - np_start, t_end - t_start))
print("Result difference: %f" % (np.abs(AB - tAB).max(), ))

我知道脚本是numpy和theano计算时间之间的比较。

但不知何故,找不到一些dll。 Pl找到以下日志:

[Py341] C:\>python ML\Deep\TheanoSetupTesting.py
blas.ldflags= -LE:\Things_Installed_Here\Theano\openblas -lopenblas
Traceback (most recent call last):
  File "ML\Deep\TheanoSetupTesting.py", line 12, in <module>
    mf = theano.function([X, Y], X.dot(Y))
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\compile\function.py", line 317, in function
    output_keys=output_keys)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\compile\pfunc.py", line 526, in pfunc
    output_keys=output_keys)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\compile\function_module.py", line 1778, in orig_function

    defaults)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\compile\function_module.py", line 1642, in create input_storage=input_storage_lists, storage_map=storage_map)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\link.py", line 690, in make_thunk
    storage_map=storage_map)[:3]
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\vm.py", line 1037, in make_all
    no_recycling))
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\op.py", line 932, in make_thunk
    no_recycling)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\op.py", line 850, in make_c_thunk
    output_storage=node_output_storage)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cc.py", line 1207, in make_thunk
    keep_lock=keep_lock)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cc.py", line 1152, in __compile__
    keep_lock=keep_lock)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cc.py", line 1602, in cthunk_factory
    key=key, lnk=self, keep_lock=keep_lock)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cmodule.py", line 1174, in module_from_key  module = lnk.compile_cmodule(location)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cc.py", line 1513, in compile_cmodule
    preargs=preargs)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cmodule.py", line 2196, in compile_str
    return dlimport(lib_filename)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cmodule.py", line 331, in dlimport
    rval = __import__(module_name, {}, {}, [module_name])
ImportError: DLL load failed: The specified module could not be found.

是python世界的新手,我无法找到未找到的Dll。如果丢失我会安装它,并将添加系统路径变量的路径。但是我怎么知道它是哪个dll。我尝试使用pdb并在cmodule.py的不同位置设置断点,但没有一个被击中。

  1. 你对这种错误及其解决方法是否熟悉?
  2. 否则,请帮我找到丢失的dll名称,我会完成其余的工作。
  3. 我不介意在安装theano时走一条完全不同的道路。我发现了一些帖子,建议微软编译器工作得很好。但是我已经连续14个小时以来一直在讨论一个问题,并且想要一种有效的方法。最终我想在我的系统上theano
  4. 顺便说一下,没有CUDA。我正在尝试使用CPU。

5 个答案:

答案 0 :(得分:5)

这可能有点晚了。我按照与你完全相同的指南,遇到了同样的错误。

原来可以通过将openblas目录添加到系统路径来修复它。在您的示例中,将“E:\ Things_Installed_Here \ Theano \ openblas”添加到系统路径变量。

请注意,根据放置DLL文件的位置,您需要添加“E:\ Things_Installed_Here \ Theano \ openblas”或“E:\ Things_Installed_Here \ Theano \ openblas \ bin”。

Windows 10 64位,Python 3.5.1(Anaconda 2.5),Theano 0.8.2。

对于那些需要它的人,我可以在Windows 10中安装Theano,这要归功于这三个指南guide1guide2以及OP附带的指南。

答案 1 :(得分:3)

好的,我终于找到了至少使用WinPython,python3.5.1.1,Win 7 64bit和mingw64进行安装的原因:

在.theanorc [.txt]文件中,我在安装blas之后,使用包含openblas include路径的一行[blas]。我删除了该行并将[blas]下面的区域留空了。重新启动WinPython / Spider,打开一个新的控制台,它运行起来。

之后,Testet使用Theano从Lasagne运行mnist.py。

答案 2 :(得分:2)

我一直在努力让theano在Windows 10 x64上工作,在阅读了几份帮助指南之后,最终对我有用的是:

  1. 安装适用于Python的Intel发行版(确保c:\ intelpython27 \和c:\ intelpython27 \ scripts位于PATH中)
  2. 打开命令行并执行:conda install mingw libpython
  3. 然后执行:pip install theano
  4. http://sourceforge.net/projects/openblas/files/v0.2.14/下载预编译的libopenblas.dll(我得到了OpenBLAS-v0.2.14-Win64-int32.zip)
  5. http://sourceforge.net/projects/openblas/files/v0.2.14/mingw64_dll.zip/download
  6. 下载mingw64_dll.zip
  7. 将OpenBLAS-v0.2.14-Win64-int32.zip提取到c:\ openblas,例如
  8. 将mingw64_dll.zip解压缩到c:\ openblas \ bin
  9. 将c:\ openblas \ lib和c:\ openblas \ bin添加到PATH
  10. 在c:\ Users \ {username}
  11. 中创建.theanorc.txt
  12. 将以下内容放入.theanorc.txt:

    [global]
    floatX = float32
    device = cpu
    
    [blas]
    ldflags = -LC:\\openblas\\bin -LC:\\openblas\\lib -lopenblas
    
  13. 希望这有助于某人。

答案 3 :(得分:1)

只是为了增加我对Win10 64bit和theano(和keras)的体验。我也得到了DLL加载失败错误。尝试了我在theano win安装网页和不同的论坛和博客文章中找到的所有内容(在Uradium的帖子中提到)。

它对我不起作用,但这是有效的:

  1. 我安装了TDM-GCC-64和openblas,使用regedit我已将他们的/ bin目录添加到PATH(以及openblas的/ lib目录)

  2. 在miniconda3下制作了干净的venv - 为theano和keras安装了先决条件(scipy,numpy,pyyaml),python 3.5.2

  3. conda install mingw libpython

  4. conda install theano(同时安装所有mingw库)

  5. 此时 - 工作 - 所以我没有使用任何.theanorc.txt文件配置,没有摆弄Windows环境变量。它甚至适用于基于keras的python脚本,即使我没有安装keras到我的conda venv它正在工作...(我在我的“普通”非conda python3中安装了keras,后来我在下面安装了keras我的conda venv也是如此。

答案 4 :(得分:0)

很晚,但供将来参考。我偶然发现这个线程试图在CPU上运行OpenBLAS测试脚本。它在GPU上运行良好,但CPU给我的错误与OP相同。我在这里尝试了这些建议,但那没有用。原来这条线在.theanorc:

ldflags=-LE:\OpenBLAS-v0.2.14-Win64-int32/bin -lopenblas

不应该在bin之后和-l之前有空格。所以它应该是:

ldflags=-LE:\OpenBLAS-v0.2.14-Win64-int32/bin-lopenblas

现在一切正常。尝试过:

Windows 10
Python 3.5
Theano 0.9
Cuda 8 (with CudaMEM and CudaDNN)
Visual Studio 2015 Community