从pyxdameraulevenshtein导入会出现以下错误

pyxdameraulevenshtein==1.5.3
pandas==1.1.4
scikit-learn==0.20.2. 

Numpy是1.16.1。

在Python 3.6中工作良好,在Python 3.7中问题。

有人在使用Python 3.7(3.7.9)时遇到过类似的问题吗?

from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance as norm_dl_dist
__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

当前回答

这对我很有用(当这一页上的任何东西都不起作用时):

# Create environment with conda or venv.
# Do *not* install any other packages here.
pip install numpy==1.21.5
# Install all other packages here.
# This works as a package may build against the currently installed version of numpy.

这解决了一个特别残酷的问题,截至2022-04-11,本页上的所有其他答案都无法解决:

其他答案试图在问题发生后解决问题,这种方法在问题发生前解决问题。

此外,可以尝试不同版本的Python,例如3.8、3.9、3.10。

@FZeiser的回答很好,解释了为什么这种方法有效。

其他回答

对我有用的是:

pip uninstall numpy
conda install -y -c conda-forge numpy

虽然听起来很奇怪……我甚至不需要用Conda卸载它,这对我来说似乎很奇怪。我使用的是python 3.9

我在使用tensorflow对象api时遇到了这个问题。Tensorflow目前不兼容numpy==1.20(尽管这个问题直到后面才会显现出来)。 在我的例子中,这个问题是由pycocotools引起的。我通过安装旧版本来解决这个问题。

pip install pycocotools==2.0.0

尝试使用numpy==1.20.0,它在这里可以工作,尽管其他情况不同(alpine 3.12上的python3.8)。

我在树莓派3中也面临着同样的问题。实际上这个错误发生在熊猫身上。虽然tensorflow需要numpy~=1.19.2,但是pandas不符合它。所以,我已经升级(因为降级不是)我的numpy到最新版本,一切都很好!!!!。

root@raspberrypi:/home/pi# python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np 
>>> np.__version__
'1.21.5'
>>> import pandas as pd
>>> pd.__version__
'1.3.5'
>>> import tensorflow as tf
>>> tf.__version__
'2.4.0'
>>> tf.keras.__version__
'2.4.0'
>>> tf.keras.layers
<module 'tensorflow.keras.layers' from '/usr/local/lib/python3.7/dist-packages/tensorflow/keras/layers/__init__.py'>

这里也有同样的问题- https://github.com/bitsy-ai/tensorflow-arm-bin/issues/5

Tensorflow来源:https://github.com/bitsy-ai/tensorflow-arm-bin

我有这个问题,但无法更新numpy,因为一些不兼容的冲突,另一个包,我需要numpy<=1.21.0。错误numpy。Ndarray大小改变,可能表明二进制不兼容是由个人包生成的。解决方案是修改pyproject。我的包和设置Toml文件:

requires = ["numpy==1.21.0", <other packages>]

之前设置为“numpy>=1.21.0”,导致错误。