ValueError:numpy.ndarray大小已更改,可能表示二进制不兼容。预期来自C头文件的88,来自PyObject的80

从 pyxdameraulevenshtein 导入会出现以下错误,我有

pyxdameraulevenshtein==1.5.3, 
pandas==1.1.4 and 
scikit-learn==0.20.2. 
Numpy is 1.16.1. 
Works well in Python3.6, Issue in Python3.7.

有没有人在 Python3.7 (3.7.9)、docker image - python:3.7-buster 上遇到过类似的问题

__init__.pxd:242: in init pyxdameraulevenshtein
    ???
E   ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject

回答

我在 Python 3.8.5 中。这听起来太简单了,但我遇到了同样的问题,我所做的就是重新安装 numpy。走了。

pip uninstall numpy
pip install numpy

  • Hahaha...I can't believe this worked for me too! For more info, I am also in Python 3.8.5. It looks like I originally had `numpy-1.19.5` and then after the uninstall-install steps I got `numpy-1.20.1 `

回答

尝试numpy==1.20.0在这里工作,即使其他情况不同(高山 3.12 上的 python3.8)。

  • `numpy==1.20.1` is already out with bugfixes 🙂

回答

事实上,(构建和)安装numpy>=1.20.0应该可以工作,正如下面的这个答案所指出的那样。但是,我认为一些背景可能很有趣——并且还提供了替代解决方案。

有一个C API的变革中numpy 1.20.0。在某些情况下,pip似乎numpy为构建阶段下载了最新版本的numpy. 如果在 中使用了构建版本<1.20,而安装的版本是=>1.20,这将导致错误。

(由于向后兼容性,它的另一种方式应该无关紧要。但如果使用已安装的版本numpy<1.20,他们就没有预料到即将发生的变化。)

这导致了解决问题的几种可能方法:

  • 升级到 numpy>=1.20.0
  • 使用minmum支持numpy的在pyproject.toml版本(oldest-supported-numpy
  • 安装 --no-binary
  • 安装 --no-build-isolation

有关潜在解决方案的更详细讨论,请参阅
https://github.com/scikit-learn-contrib/hdbscan/issues/457#issuecomment-773671043。


回答

我在使用 tensorflow 对象 api 时遇到了这个问题。Tensorflow 目前与 numpy==1.20 不兼容(尽管这个问题直到后来才显现出来)。就我而言,问题是由 pycocotools 引起的。我通过安装旧版本来修复。

pip install pycocotools==2.0.0


以上是ValueError:numpy.ndarray大小已更改,可能表示二进制不兼容。预期来自C头文件的88,来自PyObject的80的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>