从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
的确,(构建和)安装numpy>=1.20.0应该可以工作,如下面的答案所指出的。然而,我认为一些背景可能会很有趣,并提供替代解决方案。
numpy 1.20.0中的C API发生了变化。在某些情况下,pip似乎下载了numpy的最新版本用于构建阶段,但随后该程序使用已安装的numpy版本运行。如果在<1.20中使用的构建版本,但安装的版本是=>1.20,这将导致一个错误。
(反过来说也没关系,因为向后兼容。但是如果用户使用的是numpy<1.20的安装版本,他们就不会预料到即将到来的更改。)
这就引出了解决问题的几种可能方法:
升级(构建版本)到numpy>=1.20.0
在pyproject中使用最小支持的numpy版本。toml (oldest-supported-numpy)
使用——no-binary安装
使用——no-build-isolation安装
有关潜在解决方案的更详细讨论,请参见
https://github.com/scikit-learn-contrib/hdbscan/issues/457 # issuecomment - 773671043。
我在树莓派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