使用scipy.optimize时DLL加载失败?
我正在尝试使用scipy.optimize中的curve_fit函数,把一个指数函数拟合到我生成的一些数据上。我的代码是这样的:
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit
当我运行这段代码时,出现了以下错误:
ImportError: DLL加载失败:找不到指定的模块。
我在电脑的Anaconda文件夹里有安装scipy,我有80%的把握是安装过的。请问我该如何解决这个错误?(或者如果你有更好的方法来拟合指数函数到数据上,我非常乐意听听)
谢谢!
补充:这是完整的错误信息:
Traceback (most recent call last):
File "C:\Users\Casey\Documents\Python\Perc_MatPlot3.py", line 10
from scipy.optimize import curve_fit
File "C:\Users\Casey\Anaconda\Lib\site-packages\scipy\optimize\__init__.py", line 146
from .optimize import *
File "C:\Users\Casey\Anaconda\Lib\site-packages\scipy\optimize\optimize.py", line 35
from .linesearch import (line_search_BFGS, line_search_wolfe1,
File "C:\Users\Casey\Anaconda\Lib\site-packages\scipy\optimize\linesearch.py", line 16
from scipy.optimize import minpack2
ImportError: DLL load failed: The specified module could not be found.
5 个回答
这很可能是因为你安装了32位的Python,但用了64位的库,或者反过来。
你需要卸载Python,然后重新安装正确的版本。
https://www.python.org/download/
在这里你可以下载Python。
记住,你的Python库也应该和Python的位数一致,要么都是32位,要么都是64位。
我之前也遇到过同样的问题。
from scipy.optimize import minpack2
我重新安装了numpy和MLK,但在Pycharm上还是出现了这个错误。我直接把我的Python更新到了3.6,现在问题解决了。在这个过程中,使用
conda install python=3.6
因为
conda update python
告诉我我已经有3.5.2版本,这意味着conda更新没有成功把版本从3.5更新到3.6,应该是可以从像3.5.1更新到3.5.2这样的版本。我觉得这样说可能会有帮助。另外,记得在更新后重置环境。
我不太确定这是不是你想要的答案,因为这个错误可能有很多种原因……我也遇到过这种情况……
就在10分钟前,我在一台运行Vista x64系统的电脑上,刚安装了Python 3.3的Miniconda时,也遇到了同样的错误。当时在安装结束时,似乎没有把主要的Python目录添加到Windows的PATH中(我很确定我没有取消勾选那个选项)。
这周早些时候,我在一些XP和Windows 7的机器上做了同样的安装,没有遇到任何问题,所以这次让我有点意外。
如果你的电脑上没有其他的Python安装,可以试着运行一下'python'命令(按下win键 + r,或者在命令提示符下输入)。如果不行,就需要把你的Python主安装目录(也就是python.exe所在的地方)添加到你的PATH变量里。
如果这样还不行,你可以使用Dependency Walker
来检查错误信息到底是哪个DLL出了问题,然后看看这个DLL是否在你的PATH
或PYTHONPATH
中。
我也遇到过同样的DLL错误
,那是因为同一个DLL的多个版本是用不同的编译器编译的,而需要的版本没有被优先找到。如果不能删除某个版本(它是和某个程序一起安装的),那么调整你的PATH变量的顺序可能会有所帮助。
最近我在使用pyplot和scipy的时候遇到了好几个类似的问题。我在Windows 7 64位上运行的是32位的Anaconda 2.7。
我在尝试使用curve_fit的时候碰到了这个错误。我从sourceforge下载了一个叫“superpack”的东西:http://sourceforge.net/projects/scipy/
运行这个安装程序解决了这个错误,而且没有影响到我Python环境的其他部分。
我遇到了这个错误
from ._ufuncs import *
ImportError: DLL load failed: The specified module could not be found.
当我使用cgoehlke的“Python扩展包的非官方Windows二进制文件”来安装SciPy,并且是通过pip3安装的NumPy时,我忽略了这个提示:
很多二进制文件依赖于NumPy-1.9+MKL和...
他们的NumPy提供了缺失的DLL文件/模块。