ValueError:numpy.dtype的大小错误,请尝试重新编译

我只是在我的Python 2.7上安装了pandas和statsmodels包当我尝试“导入pandas作为PD”,这个错误信息出来。 谁能帮忙? 谢谢!!!

numpy.dtype has the wrong size, try recompiling Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\formula\__init__.py", line 4, in <module> from formulatools import handle_formula_data File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\formula\formulatools.p y", line 1, in <module> import statsmodels.tools.data as data_util File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\tools\__init__.py", li ne 1, in <module> from tools import add_constant, categorical File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\tools\tools.py", line 14, in <module> from pandas import DataFrame File "C:\analytics\ext\python27\lib\site-packages\pandas\__init__.py", line 6, in <module> from . import hashtable, tslib, lib File "numpy.pxd", line 157, in init pandas.tslib (pandas\tslib.c:49133) ValueError: numpy.dtype has the wrong size, try recompiling 

(扩大一点我的评论)

Numpy开发者通常遵循保持向后兼容二进制接口(ABI)的策略。 但是,ABI不是向前兼容的。

那意味着什么:

在编译的扩展中使用numpy的包是针对特定版本的numpy编译的。 未来版本的numpy将与编译的扩展包兼容(例外见下文)。 这些其他软件包的分发者不需要针对较新版本的numpy重新编译他们的软件包,并且当用户更新到新版本的numpy时,用户不需要更新这些其他软件包。

但是,这不是在另一个方向。 如果一个软件包是针对一个特定的numpy版本编译的,比如说1.7,那么就不能保证这个软件包的二进制文件可以和旧的numpy版本(比如说1.6)一起工作,而且经常或者大多数时候他们不会。

当安装较旧版本的numpy时,像pandas和statsmodels这样的软件包的二进制分发版本将不能用于最近版本的numpy。 如果我没有记错的话,一些软件包,比如matplotlib,会根据它们支持的最古老的numpy版本来编译它们的扩展。 在这种情况下,具有相同旧版本或更新版本numpy的用户可以使用这些二进制文件。

该问题中的错误消息是二进制不兼容的典型结果。

解决的办法是得到一个二进制兼容版本,或者通过将numpy更新为至lesspandas或statsmodels被编译的版本,或者针对已经安装的numpy的旧版本重新编译pandas和statsmodels。

打破ABI向后兼容性:

有时候在numpy中改进或重构会破坏ABI的向后兼容性。 这发生(无意)与numpy 1.4.0。 因此,将numpy更新为1.4.0的用户与所有其他已编译的软件包(与先前版本的numpy进行了编译)具有二进制不兼容性。 这要求使用numpy的二进制扩展的所有包都必须重新编译,以便与ABI不兼容的版本一起工作。

对于我来说(Mac OS X Maverics,Python 2.7)

 easy_install --upgrade numpy 

帮助。 在这之后,您可以使用pip来安装最新的软件包pandasscikit-learn等。

 pip install pandas 

我发现它是一个简单的版本过时或不匹配,并修复:

 pip install --upgrade numpy pip install --upgrade scipy pip install --upgrade pandas 

或者可以与单行程一起工作:

 pip install --upgrade numpy scipy pandas 

我有一个类似的错误与另一个库,并意识到我有几个版本的numpy安装在我的系统上。 对我来说,修正是编辑我的PYTHONPATH,并把包含最新版本的numpy的网站包放在第一位。

就像在这里 ,对于我来说只有sudo pip install pandas==0.13.1起作用了

使用pandas来访问MYSQL时也遇到这个错误。 此错误消息表示二进制兼容的问题,可以通过使用最新版本的pandas和numpy包来解决。 这是我的步骤来解决这个问题,它适用于我的Ubuntu 12.04:

 cd /tmp/ wget https://pypi.python.org/packages/source/p/pandas/pandas-0.12.0.tar.gz tar xzvf pandas-0.12.0.tar.gz cd pandas-0.12.0 easy_install --upgrade numpy 

就我而言,我已经安装了pandas-0.10.0.win-amd64-py2.7,但正在检查是否在更新版本的pandas中修复了一个bug。 所以我做了一个easy_install -U来强制升级,但是由于与numpy等的一些不兼容而得到了上面的错误…当我做了

 import pandas 

为了解决这个问题,我只是重新安装了pandas-0.10.0.win-amd64-py2.7二进制文件,一切正常。 我没有看到这个答案(build议使用点),这可能帮助了我(虽然不知道) 安装easy_install特定版本

这也强调了为什么应该使用virtualenv(我没有)。

对于我(Mac OS X Mavericks),它的工作是为python2.6安装版本:

 sudo port install py26-scikit-learn 

然后运行:

 python2.6 myscript.py 

我解决Webfaction的问题是旧的numpy库(1.5),这是与我的新鲜冲突

pip安装pandas

安装在.virtualenv。

这个问题在我将pandas安装在虚拟环境之后解决了。 这个想法来自https://github.com/pydata/pandas/issues/3711上的讨论,谢谢,; cpcloud !

我刚刚遇到这个“ValueError”问题,并已解决。 肯定有numpy软件包有问题。

但是当我尝试点击pip install --upgrade numpy升级pip install --upgrade numpy失败,所以我卸载并下载最新的numpy.zip文件。 然后手动解压缩和python setup.py install它。

幸运的是,它的工作原理!

像@ user333700所说的,所需要的版本库可能不会彼此满足。 你得到一个库作为另一个的依赖。 然后不知道它已经被安装为依赖,你需要这个特定的库,并安装一个版本。 用这种方式依赖可能会搞砸。

我住过这样一个案子,并寻找解决办法。 发现这个: https : //stackoverflow.com/a/12975518/1694344

我有两个不同版本的egg-info文件和numpy的文件夹名称:

 drwxr-xr-x. 19 root root 4096 Sep 25 15:00 numpy drwxr-xr-x. 2 root root 4096 Sep 22 11:25 numpy-1.13.1.dist-info -rw-r--r--. 1 root root 1630 Nov 20 2015 numpy-1.7.1-py2.7.egg-info 

我把它们都删除了,并用pip重新安装了numpy。