从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
对于几乎相同的图像:python:3.7-slim-buster
我今天才开始有这个问题,以前是不存在的。
我通过从require .txt文件中删除numpy来解决这个问题,并在我的Dockerfile中执行以下操作:
RUN pip3 install --upgrade --no-binary numpy==1.18.1 numpy==1.18.1 \
&& pip3 install -r requirements.txt
我使用了一些旧版本的keras和它的库,升级到numpy 1.20.0对这些库不起作用。但我认为解决方案包含在我给你的第一个命令中,它告诉pip不要编译numpy,而是下载一个预编译的版本。
命令中的技巧是,您可能会发现有人告诉您使用pip的——no-binary选项来解决问题,但他们没有指定如何解决问题,这可能很棘手(就像我遇到的那样);您必须在命令中编写两次包才能使其工作,否则PIP将向您抛出一个错误。
我认为第一个命令中的——upgrade选项是不必要的。
对于几乎相同的图像:python:3.7-slim-buster
我今天才开始有这个问题,以前是不存在的。
我通过从require .txt文件中删除numpy来解决这个问题,并在我的Dockerfile中执行以下操作:
RUN pip3 install --upgrade --no-binary numpy==1.18.1 numpy==1.18.1 \
&& pip3 install -r requirements.txt
我使用了一些旧版本的keras和它的库,升级到numpy 1.20.0对这些库不起作用。但我认为解决方案包含在我给你的第一个命令中,它告诉pip不要编译numpy,而是下载一个预编译的版本。
命令中的技巧是,您可能会发现有人告诉您使用pip的——no-binary选项来解决问题,但他们没有指定如何解决问题,这可能很棘手(就像我遇到的那样);您必须在命令中编写两次包才能使其工作,否则PIP将向您抛出一个错误。
我认为第一个命令中的——upgrade选项是不必要的。
这对我很有用(当这一页上的任何东西都不起作用时):
# 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的回答很好,解释了为什么这种方法有效。