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

Python ValueError:numpy.dtype大小错误,请尝试重新编译,python,numpy,installation,pandas,statsmodels,Python,Numpy,Installation,Pandas,Statsmodels,我刚刚在Python2.7上安装了pandas和statsmodels包 当我尝试“将熊猫作为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-

我刚刚在Python2.7上安装了pandas和statsmodels包 当我尝试“将熊猫作为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.dtype的大小不正确,请尝试重新编译
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\analytics\ext\python27\lib\site packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\formula\\ uuu init\uuuu.py”,
第4行,在
从formulatools导入句柄\公式\数据
文件“C:\analytics\ext\python27\lib\site packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\formula\formulatools.p
y“,第1行,在
将statsmodels.tools.data作为数据导入
文件“C:\analytics\ext\python27\lib\site packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\tools\\ uuu init\uuuu.py”,li
东北1号,在
从工具导入添加常量,分类
文件“C:\analytics\ext\python27\lib\site packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\tools\tools.py”,第行
14,在
从导入数据帧
文件“C:\analytics\ext\python27\lib\site packages\pandas\\uuuuu init\uuuuuuu.py”,第6行,在
从…起导入哈希表、tslib、lib
文件“numpy.pxd”,第157行,位于init pandas.tslib(pandas\tslib.c:49133)中
ValueError:numpy.dtype大小错误,请尝试重新编译
(对我的评论进行一点扩展)

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

这意味着:

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

然而,这并不是朝着另一个方向发展。如果一个包是根据一个特定的numpy版本(比如1.7)编译的,那么就不能保证该包的二进制文件能够与旧的numpy版本(比如1.6)一起工作,而且通常或大多数情况下不会

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

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

解决方案是获得一个二进制兼容的版本,或者至少将numpy更新为编译pandas或statsmodels时使用的版本,或者根据已安装的旧版本numpy重新编译pandas和statsmodels

打破ABI向后兼容性:

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

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

我在使用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。所以我做了一个简单的安装-U来强制升级,但是由于与numpy等的一些不兼容,导致了上面的错误。。。当我这么做的时候

import pandas
为了解决这个问题,我刚刚重新安装了pandas-0.10.0.win-amd64-py2.7二进制文件,一切正常。我没有看到这个可能对我有帮助的答案(建议使用pip)(尽管不确定)

这也突出了为什么应该使用virtualenv(我不是)。对我(Mac OS X Mavericks)来说,安装python2.6的版本是可行的:

sudo port install py26-scikit-learn
然后运行:

python2.6 myscript.py

我在WebPaction上解决的问题是旧的numpy库(1.5),它与我的新版本冲突

安装熊猫

安装在.virtualenv中

在我将pandas安装出虚拟环境后,问题就解决了。 这个想法来自于对的讨论,谢谢

对我来说(MacOSXMaverics,Python 2.7)

有帮助。在此之后,您可以使用pip安装最新的软件包pandas、scikit learn、e.t.c.:

pip install pandas

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

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


幸运的是,它起作用了

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

pip install --upgrade numpy
pip install --upgrade scipy
pip install --upgrade pandas
或者可以使用一个衬里:

pip install --upgrade numpy scipy pandas

正如@user333700所说,对于我来说,只有
sudopip安装pandas==0.13.1
worked

,库的所需版本可能彼此不满足。将一个库作为另一个库的依赖项。然后,在不知道它已作为依赖项安装的情况下,您需要该特定库,然后安装一个版本。Wi
pip install --upgrade numpy scipy pandas
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
python -m pip install scikit-learn==0.15