使用scipy.optimize时出现了DLL加载失败的问题?

15

我正在尝试上传来自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.

要么它没有正确安装,要么scipy不在你的pythonpath中,因为那个导入应该可以工作。你能导入scipy吗,还是只有scipy.optimize? - pseudocubic
请提供“完整”的错误信息。您确定正在运行正确版本的Python吗?您尝试过重新安装吗?我已经调整了您的标签,因为这与matplotlib无关,但肯定是Windows问题。 - tacaswell
我在使用"import scipy"时没有遇到任何问题,但是我的代码会产生错误。 - user3479740
5个回答

20

在我的一个自己的库中导入scipy.special时出现了问题。 在Spyder中运行正常,但是当我尝试使用idle时就会出错。请发布有关如何安装MKL的更多信息。 - Colin Helms

4
最近我在尝试使用pyplot和scipy时遇到了几个类似的问题。我使用的是Anaconda 2.7,32位,运行在Windows 7 x64上。
当我尝试使用curve_fit时,我刚刚遇到了这个确切的错误。我从sourceforge下载了“superpack”:http://sourceforge.net/projects/scipy/ 运行这个安装程序可以修复错误,并不会影响我的Python环境的其他部分。

0

不确定这是否是你要的答案,因为这个错误可能意味着很多事情......我也曾经遇到过......

刚刚,在Vista x64机器上,使用Python 3.3的Miniconda进行全新安装时(并且我非常确定自己没有在安装结束时取消勾选主Python目录),我也遇到了同样的错误(同时加载Scipy optimize)。不知何故,它未能将主Python目录添加到Windows PATH中。

本周早些时候,我在一些XP和Windows 7机器上执行了相同的过程,没有任何问题,所以这让我有点措手不及。

如果您的计算机上没有其他Python安装,则可以检查运行“python”(按win键+r或从命令提示符执行)是否正常。如果不行,只需将您的主安装目录(即python.exe所在的位置)添加到PATH变量中。

如果这行不通,您可以使用Dependency Walker检查错误消息实际涉及的DLL,然后查看该DLL是否存在于您的PATHPYTHONPATH中。

我曾经遇到过相同的DLL错误,当多个版本的同一DLL使用不同的编译器进行编译时,所需版本未被首先找到。如果无法删除某个版本(它所附带的程序),则更改PATH变量的顺序可能会有所帮助。


0

我曾经遇到过完全相同的问题。

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这样的版本。 希望这可以帮助您。另外,请记得在更新后重置环境。


-2

这很可能是你安装了32位的Python,但是64位的库或者反之。

你需要卸载Python并重新安装正确的Python。

https://www.python.org/download/

在这里你可以下载Python。

请记住,你的Python库应该与Python的32位或64位版本相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接