我刚刚在我的 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 开发人员通常遵循保持向后兼容的二进制接口(interface) (ABI) 的策略。但是,ABI 不向前兼容。

那是什么意思:

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

然而,这并没有朝着另一个方向发展。如果一个包是针对特定的 numpy 版本编译的,比如 1.7,那么不能保证该包的二进制文件可以与较旧的 numpy 版本一起使用,比如 1.6,并且经常或大部分时间它们不会。

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

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

解决方案是获得二进制兼容版本,方法是将 numpy 至少更新为编译 pandas 或 statsmodels 的版本,或者针对已安装的旧版本 numpy 重新编译 pandas 和 statsmodels。

打破 ABI 向后兼容性:

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

关于python - ValueError : numpy. dtype 大小错误,请尝试重新编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17709641/

10-13 07:31
查看更多