首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ValueError: numpy.dtype的大小错误,请尝试重新编译

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

Stack Overflow用户
提问于 2013-07-18 04:30:56
回答 10查看 84.9K关注 0票数 87

我刚刚在我的python2.7上安装了pandas和statsmodel包,当我尝试"import pandas as pd“时,这个错误信息就出来了。有人能帮上忙吗?谢谢!

代码语言:javascript
复制
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
EN

回答 10

Stack Overflow用户

发布于 2013-08-22 07:32:22

(对我的评论进行一点扩展)

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

这意味着:

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

然而,这并不是朝向相反的方向。如果一个包是针对特定的numpy版本进行编译的,比如1.7,那么就不能保证该包的二进制文件能够与较早的numpy版本(比如1.6 )一起工作,而且通常或大部分时间都不能。

在安装了较旧版本的numpy时,针对最新版本numpy编译的pandas和statsmodel等包的二进制分发版将不起作用。有些包,例如matplotlib,如果我没记错的话,会根据它们支持的最旧的numpy版本编译它们的扩展。在这种情况下,使用相同旧版本或任何更新版本的numpy的用户都可以使用这些二进制文件。

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

解决方案是获得一个二进制兼容的版本,或者通过至少将numpy更新到编译pandas或statsmodel时所用的版本,或者根据已经安装的numpy的旧版本重新编译pandas和statsmodel。

打破ABI向后兼容性:

有时,numpy中的改进或重构会破坏ABI的向后兼容性。在numpy 1.4.0中(无意中)发生了这种情况。因此,将numpy更新到1.4.0的用户与针对之前版本的numpy编译的所有其他编译包具有二进制不兼容性。这要求所有具有使用numpy的二进制扩展的包都必须重新编译,才能与ABI不兼容的版本一起工作。

票数 65
EN

Stack Overflow用户

发布于 2016-02-18 16:42:18

我发现它是一个过时或不匹配的简单版本,并通过以下方式进行了修复:

代码语言:javascript
复制
pip install --upgrade numpy
pip install --upgrade scipy
pip install --upgrade pandas

或者可以使用下面的一行代码:

代码语言:javascript
复制
pip install --upgrade numpy scipy pandas
票数 31
EN

Stack Overflow用户

发布于 2013-08-23 20:19:08

我在另一个库中遇到了类似的错误,并意识到我的系统上安装了几个版本的numpy。对我来说,修复方法是编辑我的PYTHONPATH,并将包含最新版本numpy的站点包放在第一位。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17709641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档