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

2025-03-20 08:47:00
admin
原创
39
摘要:问题描述:我刚刚在 Python 2.7 上安装了 pandas 和 statsmodels 包。当我尝试时 import pandas as pd,出现了此错误消息。有人可以帮忙吗?numpy.dtype has the wrong size, try recompiling Traceback (most...

问题描述:

我刚刚在 Python 2.7 上安装了 pandas 和 statsmodels 包。当我尝试时 import pandas as pd,出现了此错误消息。有人可以帮忙吗?

numpy.dtype has the wrong size, try recompiling
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:analyticsextpython27libsite-packagesstatsmodels-0.5.0-py2.7-win32.eggstatsmodelsormula__init__.py",
line 4, in <module>
    from formulatools import handle_formula_data
  File "C:analyticsextpython27libsite-packagesstatsmodels-0.5.0-py2.7-win32.eggstatsmodelsormulaormulatools.p
y", line 1, in <module>
    import statsmodels.tools.data as data_util
  File "C:analyticsextpython27libsite-packagesstatsmodels-0.5.0-py2.7-win32.eggstatsmodels    ools__init__.py", li
ne 1, in <module>
    from tools import add_constant, categorical
  File "C:analyticsextpython27libsite-packagesstatsmodels-0.5.0-py2.7-win32.eggstatsmodels    ools    ools.py", line
14, in <module>
    from pandas import DataFrame
  File "C:analyticsextpython27libsite-packagespandas__init__.py", line 6, in <module>
    from . import hashtable, tslib, lib
  File "numpy.pxd", line 157, in init pandas.tslib (pandas    slib.c:49133)
ValueError: numpy.dtype has the wrong size, try recompiling

解决方案 1:

(稍微扩展一下我的评论)

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 不兼容的版本一起使用。

解决方案 2:

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

easy_install --upgrade numpy

有帮助。此后,您可以使用pip安装最新的软件包pandasscikit-learn等:

pip install pandas

解决方案 3:

我发现这是一个简单版本,已经过时或不匹配,并且已修复:

pip install --upgrade numpy
pip install --upgrade scipy
pip install --upgrade pandas

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

pip install --upgrade numpy scipy pandas

解决方案 4:

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

解决方案 5:

就像在这里一样,对我来说只sudo pip install pandas==0.13.1有效

解决方案 6:

我在使用 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

解决方案 7:

就我而言,我安装了 pandas-0.10.0.win-amd64-py2.7,但想检查一下较新版本的 pandas 中是否修复了一个错误。因此,我执行了 easy_install -U 来强制升级,但由于与 numpy 等不兼容,因此出现了上述错误...

import pandas

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

这也强调了为什么应该使用 virtualenv(而我没有使用)。

解决方案 8:

对于我(Mac OS X Mavericks)来说,安装 python2.6 版本是有效的:

sudo port install py26-scikit-learn

然后运行:

python2.6 myscript.py

解决方案 9:

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

pip install pandas

在.virtualenv 中安装。

在虚拟环境中执行 pip install pandas 后,问题得到解决。这个想法来自https://github.com/pydata/pandas/issues/3711上的讨论,谢谢cpcloud!

解决方案 10:

我刚刚遇到这个“ValueError”问题并已解决。numpy 包肯定有问题。

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

幸运的是,它有效!

解决方案 11:

就像@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。

解决方案 12:

我遇到了类似的问题,按照之前评论中的建议重新安装pip install ...也没有用。

对我有用的是使用添加的标志重新安装pip install --no-cache-dir ...,似乎缓存中的某处有一个不兼容的 numpy 版本。

解决方案 13:

在某些情况下,您想要保留特定的 NumPy 版本,而此处提到的升级选项将不起作用。我想到的一个例子是 ArcGIS 预装的 Python 发行版。要使 ArcPy 在 ArcGIS 10.5.1 中工作,该发行版需要是 Python 2.7.12 和 NumPy 1.9.3,任何其他版本的 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
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用