我刚刚在我的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
答案 0 :(得分:62)
(在我的评论上稍微扩展一下)
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和statsmodels。
打破ABI向后兼容性:
有时numpy中的改进或重构会破坏ABI的向后兼容性。这种情况(无意中)发生在numpy 1.4.0上。 因此,将numpy更新为1.4.0的用户与所有其他已编译的包具有二进制不兼容性,这些包是针对先前版本的numpy编译的。这要求必须重新编译具有使用numpy的二进制扩展的所有包以使用ABI不兼容版本。
答案 1 :(得分:37)
对我来说(Mac OS X Mavericks,Python 2.7)
easy_install --upgrade numpy
帮助。在此之后,您可以安装最新的软件包 pandas , scikit-learn ,e.t.c。使用点:
pip install pandas
答案 2 :(得分:30)
我发现这是一个过时或不匹配的简单版本,并修复了:
pip install --upgrade numpy
pip install --upgrade scipy
pip install --upgrade pandas
或者可以使用一个班轮:
pip install --upgrade numpy scipy pandas
答案 3 :(得分:5)
我和另一个库有类似的错误,并意识到我的系统上安装了几个版本的numpy。我的修复是编辑我的PYTHONPATH并将包含最新版numpy的网站包放在第一位。
答案 4 :(得分:2)
与here一样,对我来说只有sudo pip install pandas==0.13.1
工作
答案 5 :(得分: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
答案 6 :(得分:1)
在我的情况下,我安装了pandas-0.10.0.win-amd64-py2.7但是正在检查是否在更新版本的pandas中修复了一个错误。所以我做了一个easy_install -U来强制升级,但由于与numpy等有些不兼容而导致上述错误...当我做的时候
import pandas
要修复,我只是重新安装了pandas-0.10.0.win-amd64-py2.7二进制文件,一切正常。我没有看到这个答案(建议使用pip)可能对我有帮助(虽然不确定)Install particular version with easy_install
这也突出了为什么人们应该使用virtualenv(我不是)。
答案 7 :(得分:1)
对我来说(Mac OS X Mavericks)它可以安装python2.6的版本:
sudo port install py26-scikit-learn
然后运行:
python2.6 myscript.py
答案 8 :(得分:1)
我在Webfaction上解决的问题是旧的numpy库(1.5)与我的新鲜冲突
pip install pandas
安装在.virtualenv中。
我把pandas pipas从虚拟环境中取出后解决了这个问题。 这个想法来自对https://github.com/pydata/pandas/issues/3711的讨论,谢谢,cpcloud!
答案 9 :(得分:0)
我刚刚遇到这个'ValueError'问题而已经解决了这个问题。 numpy包肯定有问题。
但是当我尝试pip install --upgrade numpy
失败时,我卸载并下载最新的numpy.zip
文件。
然后手动解压缩并python setup.py install
。
幸运的是,它有效!
答案 10 :(得分:0)
就像@ 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。
答案 11 :(得分:0)
在某些情况下,您希望保留特定的NumPy版本,此处提及的升级选项将无效。 我遇到的一个例子是预装了ArcGIS的Python发行版。要使ArcPy在ArcGIS 10.5.1中工作,该分发需要是带有NumPy 1.9.3的Python 2.7.12,而任何其他版本的NumPy可能会导致ArcPy功能出现问题。
对于这种情况,您可以尝试安装特定的旧版本的有问题的第三方库,该库应该与ArcGIS具有的旧版NumPy版本兼容。
例如,scikit-learn 0.19.1不能与NumPy 1.9.3一起使用,并且会导致您提到的相同错误。但是,scikit-learn 0.15工作正常。您可以测试不同的版本以找到有效的版本。只需通过pip提及版本号:
python -m pip install scikit-learn==0.15
答案 12 :(得分:0)
我遇到了类似的问题,只是按照先前评论中的建议使用pip install ...
重新安装是行不通的。
对我有用的是使用添加的标记pip install --no-cache-dir ...
重新安装,似乎缓存中某处存在不兼容的numpy版本。