从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的回答很好,解释了为什么这种方法有效。

其他回答

Numpy 1.22版本为我解决了这个问题。

对于任何使用诗歌的人来说,有必要进行实验。对于numpy<1.20依赖项的应用程序,New-installer设置为true才能正确构建,即:

poetry config experimental.new-installer true

默认情况下是正确的,但如果它被改变了(就像我的情况一样),它会让你识破。

我的应用程序使用Tensorflow,因此我没有升级到>1.20的选项。诗歌也不支持无二进制依赖。

安装旧版本的gensim,它工作!

pip install gensim==3.5.0

or

conda install gensim==3.5.0

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

pip install pycocotools==2.0.0

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

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

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