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

Amb*_*hen 85 python install numpy pandas statsmodels

我刚刚在我的python 2.7上安装了pandas和statsmodels包当我尝试"导入pandas as 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
Run Code Online (Sandbox Code Playgroud)

Jos*_*sef 63

(扩大我的评论)

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

那意味着什么:

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

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

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

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

解决方案是通过将numpy更新到至少编译了pandas或statsmodel的版本来获得二进制兼容版本,或者针对已安装的旧版numpy重新编译pandas和statsmodel.

打破ABI向后兼容性:

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


Fed*_*kii 37

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

easy_install --upgrade numpy
Run Code Online (Sandbox Code Playgroud)

帮助.在此之后,您可以使用pip安装最新的包pandas,scikit-learn等:

pip install pandas
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚执行了"easy_install --upgrade numpy",但没有安装最新的相关软件包,如pandas andk scikit-learn.一切都很好. (3认同)

Rex*_*zle 30

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

pip install --upgrade numpy
pip install --upgrade scipy
pip install --upgrade pandas
Run Code Online (Sandbox Code Playgroud)

或者可以使用一个班轮:

pip install --upgrade numpy scipy pandas
Run Code Online (Sandbox Code Playgroud)


Cal*_*imo 5

我与另一个库有类似的错误,并意识到我的系统上安装了几个版本的numpy.我的修复是编辑我的PYTHONPATH并将包含最新版numpy的站点包放在第一位.