programing

ValueError: numpy.ndarray 크기가 변경되었습니다. 이진 비호환성을 나타낼 수 있습니다.C 헤더에서 88이 필요하고 PyObject에서 80이 필요합니다.

abcjava 2023. 8. 29. 20:05
반응형

ValueError: numpy.ndarray 크기가 변경되었습니다. 이진 비호환성을 나타낼 수 있습니다.C 헤더에서 88이 필요하고 PyObject에서 80이 필요합니다.

에서 가져오기pyxdameraulevenshtein과 같은 오류가 합니다. I have 제다니합공, 저는다.

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

Numpy는 1.16.1입니다.

Python 3.6, Issue in Python 3.7에서 잘 작동합니다.

3.7 파이썬 3.7(3.7.9), ▁python?▁with▁has▁been▁▁similar니습▁3▁dock▁facinger▁anyone▁image사람이▁3도커직면한문3와 비슷한 문제에 직면한 사람이 있습니까?python:3.7-buster?

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

파이썬 3.8.5에 있습니다.현실이 되기에는 너무 단순한 것처럼 들리지만, 저는 같은 문제를 겪었고 제가 한 일은 numpy를 다시 설치하는 것뿐이었습니다.사라지다.

pip install --upgrade numpy

또는

pip uninstall numpy
pip install numpy

을 시험해 보다.numpy==1.20.0다른 상황이 다르더라도 여기서 작동했습니다(알파인 3.12의 경우 § 3.8).

제로설, (건물및치) 실:를 사용하여 설치합니다.numpy>=1.20.0효과가 있어야 합니다. 예를 들어 이 답변에서 지적한 바와 같습니다.하지만, 저는 어떤 배경이 흥미로울 수도 있다고 생각했습니다 -- 그리고 대안적인 해결책도 제공합니다.

에서 C API가 변경되었습니다.numpy 1.20.0 어떤경는에우,,pip는 최신 의 의최버전것같다다습니는하운을 하는 것 .numpy빌드 단계에서 프로그램이 설치된 버전으로 실행됩니다.numpy 빌경버우전에 사용된 <1.20은 그나설 버전은입니다.=>1.20그러면 오류가 발생합니다.

(역호환성 때문에 문제가 되지 않을 것입니다.된 버전을 numpy<1.20그들은 다가올 변화를 예상하지 못했습니다.)

이를 통해 문제를 해결할 수 있는 몇 가지 방법을 찾을 수 있습니다.

  • 버전을 (빌드 버전)으로 합니다.numpy>=1.20.0
  • 최소 지원되는 Numpy 버전 사용pyproject.toml(oldest-supported-numpy)
  • 를 사용하여 합니다.--no-binary
  • 를 사용하여 합니다.--no-build-isolation

잠재적인 솔루션에 대한 자세한 내용은 https://github.com/scikit-learn-contrib/hdbscan/issues/457#issuecomment-773671043 을 참조하십시오.

업그이않은솔루제공션지하드레▁solution제numpy

업레이하동안는을 .numpy버전은 종종 문제를 해결할 수 있지만 항상 실행 가능한 것은 아닙니다.좋은 예는 사용 중인 경우입니다.tensorflow==2.6.0 버전의 최신제호않는과 되지 않습니다.numpyversion 은 버필 (요전)를 필요로 .~=1.19.2).

이미 FZeizer의 답변에서 언급했듯이, 변화가 있었습니다.numpy 버의전 SC 1.20.0이C를 들어, 할때이에있의존하키습다패니가지빌는드▁that▁there있다▁e▁c습니▁are▁api패,키▁are빌▁this가g▁when▁packages.pyxdameraulevenshtein 점을 하면,pip종속성 해결 프로그램은 패키지 설치 순서를 보장하지 않습니다. 다음과 같은 상황이 발생할 수 있습니다.

  1. pip를 설치해야 되었습니다.numpy버전인 그고최신버선전택니다합을리▁the,다▁version▁latest▁chooses▁and니선▁it택을 선택합니다.1.21.2이 답변을 작성할 당시 기준으로
  2. 그런 다음 다음 다음에 의존하는 패키지를 구축합니다.numpy를 들어 그예 C API, 를들어고.pyxdameraulevenshtein 이패는이호다니환됩다과음과 됩니다.numpy 1.21.2C API.
  3. 에 중에나▁at.pip의 의이버대요사구있항패는설합치니다야해를키에 사항이 .numpy를 들어, 예를 들어, 기호입니다.tensorflow==2.6.0.numpy==1.19.5.결적로으과.numpy==1.21.2가 제거되고 이전 버전이 설치됩니다.
  4. 를사하는코실때행할을 할 때pyxdameraulevenshtein된 현재설업의존다니합에 합니다.numpy C API, 그나러numpy버전이 다운그레이드되어 오류가 발생합니다.

해결책

.numpy C API C 입니다.numpy예를 들어pyxdameraulevenshtein:

pip uninstall pyxdameraulevenshtein
pip install pyxdameraulevenshtein --no-binary pyxdameraulevenshtein

텐서플로 오브젝트 api를 사용할 때 이 문제가 있었습니다.Tensorflow는 현재 numpy==1.20과 호환되지 않습니다(이 문제는 나중까지 분명하지 않습니다).저의 경우, 이 문제는 피코툴로 인해 발생했습니다.이전 버전을 설치하여 수정했습니다.

pip install pycocotools==2.0.0

파이썬 버전을 numpy==1.21.1로 업그레이드한 것이 저에게 효과가 있었습니다!

저에게 효과가 있었던 것은 다음과 같습니다.

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

이상하게 들릴지 모르지만,나는 콘다와 함께 그것을 제거할 필요조차 없었는데, 그것은 나에게 이상하게 보였습니다.저는 파이썬 3.9를 사용하고 있습니다.

시를 사용하는 사람은 누구나 시를 가지고 있어야 합니다.experimental.new-installer로 설정한.true▁a▁여▁an▁for하대의numpy<1.20 종속성, 확하게구하종는속, 예:

poetry config experimental.new-installer true

그렇다.true기본적으로 하지만 (나의 경우처럼) 변경되면 당신을 알아낼 수 있습니다.

를 사용하기 에, 는 Tensorflow로 할 수 .>1.20시는 또한 지지하지 않습니다.--no-binary 관계

Numpy 버전 1.22가 해결해 주었습니다.

나는 라즈베리 파이 3에서 같은 문제에 직면했습니다.사실 오류는 다음과 같습니다.pandas텐서 흐름이 필요하지만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 .https://github.com/bitsy-ai/tensorflow-arm-bin/issues/5

텐서 흐름 소스: https://github.com/bitsy-ai/tensorflow-arm-bin

이 버전은 [SO]: ValueError: numpy.ndarray size가 변경된 버전으로 이진 비호환성을 나타낼있습니다. C 헤더에서 88이 예상되고 PyObject에서 80이 예상됩니다 - (@FZeizer의 답변) (대답 BTW).

간단히 말해, ABI 변경(NumPy 단위)입니다.
따라서 어떠한 경우에도 두 버전(변경사항이 있는 경우와 없는 경우)을 함께 사용해서는 안 됩니다.
PyxDamerauLevenshtein에서 오류 메시지(일부 사용자에게는 오해의 소지가 있음)가 발생합니다.

NumPy

[NumPy]: NumPy 1.20.0 릴리스 정보 - np.ndarray 및 np.void_ 변경된 상태 크기:

PyArrayObjectPyVoidScalarObject 구조의 크기가 변경되었습니다.다음 헤더 정의가 제거되었습니다.

#define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields))

크기가 컴파일 시간 상수로 간주되어서는 안 되므로, NumPy의 다른 런타임 버전에 대해 변경됩니다.

가장 관련성이 높은 사용은 C로 작성된 잠재적인 하위 클래스이며, 이 하위 클래스는 다시 컴파일되어 업데이트되어야 합니다.자세한 내용은 PyArrayObject 설명서를 참조하고 이 변경 사항에 영향을 받는 경우 NumPy 개발자에게 문의하십시오.

NumPy는 정상적인 오류를 제공하려고 하지만 고정 구조 크기가 예상되는 프로그램에 정의되지 않은 동작이 있으며 충돌이 발생할 가능성이 있습니다.

[GitHub]: numpy/numpy - (v1.19.5) numpy/numpy/core/include/numpy/ndarray 유형.h#726:

#define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields))

v1.20.0(및 이전 RC) 이후 버전에서 마지막으로 이 라인을 주석 처리합니다.
또한 동일한 버전 사이에 새로운 멤버가 PyArrayObject_fields 구조체(위의 ~ 20줄)에 추가되었다는 점도 여기서 언급할 가치가 있습니다.

void *_buffer_info;  /* private buffer info, tagged to allow warning */

오류 메시지(8088)의 숫자가 어느 정도 의미를 갖기 시작했습니다.

위의 버전 사이에는 경계가 있습니다.버전으로 빌드되고 다른 버전으로 실행되는 모든 버전은 지원되지 않는 시나리오입니다.마치 다른 라이브러리를 잘못 사용하는 것과 같습니다. 두 버전API/ABI가 호환되지 않을 때 한 버전(헤더 .so(.lib))으로 빌드하고 다른 버전(.so(.dll)으로 실행하는 것입니다.

두 가지 사례가 나타납니다.

  1. 빌드: v > = v1.20.0, 실행: v < = v1.19.5: 지원되지 않음

  2. 빌드: v <= v1.19.5, 실행: v > = v1.20.0: 기술적으로도 지원되지 않지만 컴파일(성공) 시간에 계산된 값이 더 이상 없기 때문에([SO]: CLR Windows Form의 LNK2005 오류(@CristiFati의 답변) 작동합니다.

[GitHub]: numpy/numpy - ENH, API: 어레이에 내보낸 버퍼 정보 저장은 변경 사항을 적용한 커밋입니다.

PyxDamerauLevenshtein

[GitHub]: lanl/pyxDamerauLevenshtein - pyxDamerauLevenshteinNumPy에 의존하는 확장 모듈(C + Cython)입니다.소스 코드는 (간접적으로) ndarraytype.h를 포함합니다.

브라우징 [PyPI]: pyxDamerauLevenshtein(최신 버전 이상)에는 하나의 바이너리(OSXpc064용)와 하나의 파이썬 버전(패키지 게시 시 LTS일 수 있음)만 있습니다.
결과적으로, 다른 모든 플랫폼에서 다음과 같은 경우pip install에드, 그것은 출처로 만들어졌습니다.

단순성을 위해 에서는 v1.5.3 사용합니다(질문에서와 같이).
참고로 setup.py 에는 NumPy>= v1.16.1필요하지만 요구 사항이 있습니다.v1.16.1을 종속성으로 포함하는 txt 파일(특히 조사가 얕을 때 약간 오해의 소지가 있음).

오류 메시지가 v1.5.1(특히 이 NumPy에 대해)에 추가되었습니다.ABI 변경), 그리고 빌드 시 NumPy 의존에서 벗어나려고 할 때 v1.7.0에서 제거되었습니다.이 상황(특정 NumPy 버전에 따라 다른 패키지)에 부딪히는 빈도로 인해 발생하는 악몽 때문인 것 같습니다.
제거 커밋: [GitHub]: lanl/pyxDamerauLevenshtein - NumPy에서 멀어지는번째 시도.

예제

일단 이론이 밝혀지면, 문제를 재현하는 것은 어렵지 않습니다.
예:

  • NumPy <= v1.19.5(v1.19.5) 설치

  • PyxDamerauLevenshtein v1.5.3 설치

저는 Win에서 "demo"를 준비했습니다. 마침 제가 현재 부팅하고 있는 OS이기 때문입니다.
또한 프로세스의 여러 지점에서 상태를 캡처하는 몇 가지 추가 명령이 있습니다. 일부 않은) 됩니다.

(py_pc064_03.07_test1_q066060487) [cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q066060487]> :: Python 3.7 console
(py_pc064_03.07_test1_q066060487) [cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q066060487]> sopr.bat
### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###

[prompt]>
[prompt]> python -c "import sys;print(\"\n\".join((sys.executable, sys.version)))"
E:\Work\Dev\VEnvs\py_pc064_03.07_test1_q066060487\Scripts\python.exe
3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)]

[prompt]>
[prompt]> python -m pip freeze

[prompt]>
[prompt]> python -m pip install numpy==1.19.5
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting numpy==1.19.5
  Downloading numpy-1.19.5-cp37-cp37m-win_amd64.whl (13.2 MB)
     ---------------------------------------- 13.2/13.2 MB 8.5 MB/s eta 0:00:00
Installing collected packages: numpy
Successfully installed numpy-1.19.5

[prompt]>
[prompt]> python -m pip freeze
numpy==1.19.5

[prompt]>
[prompt]> :: Pass -v to see what is actually going on. I`ll truncate some output
[prompt]>
[prompt]> python -m pip install -v pyxdameraulevenshtein==1.5.3
Using pip 22.3.1 from E:\Work\Dev\VEnvs\py_pc064_03.07_test1_q066060487\lib\site-packages\pip (python 3.7)
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting pyxdameraulevenshtein==1.5.3
  Downloading pyxDamerauLevenshtein-1.5.3.tar.gz (58 kB)
     ---------------------------------------- 58.5/58.5 kB 1.0 MB/s eta 0:00:00
  Running command pip subprocess to install build dependencies
  Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com, https://pypi.ngc.nvidia.com
  Collecting setuptools>=40.8.0
    Downloading setuptools-66.0.0-py3-none-any.whl (1.3 MB)
       ---------------------------------------- 1.3/1.3 MB 5.0 MB/s eta 0:00:00
  Collecting wheel>=0.33.1
    Downloading wheel-0.38.4-py3-none-any.whl (36 kB)
  Collecting numpy>=1.16.1
    Downloading numpy-1.21.6-cp37-cp37m-win_amd64.whl (14.0 MB)
       ---------------------------------------- 14.0/14.0 MB 9.2 MB/s eta 0:00:00
  Installing collected packages: wheel, setuptools, numpy

  # @TODO - cfati: !!! Check NumPy version used at build time !!!

  Successfully installed numpy-1.21.6 setuptools-66.0.0 wheel-0.38.4
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
  running egg_info

  # @TODO - cfati: Truncated output

   Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy>=1.16.1 in e:\work\dev\venvs\py_pc064_03.07_test1_q066060487\lib\site-packages (from pyxdameraulevenshtein==1.5.3) (1.19.5)
Building wheels for collected packages: pyxdameraulevenshtein
  Running command Building wheel for pyxdameraulevenshtein (pyproject.toml)
  running bdist_wheel
  running build
  running build_ext
  building 'pyxdameraulevenshtein' extension
  creating build
  creating build\temp.win-amd64-cpython-37
  creating build\temp.win-amd64-cpython-37\Release
  creating build\temp.win-amd64-cpython-37\Release\pyxdameraulevenshtein
  C:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\bin\HostX86\x64\cl.exe /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IC:\Users\cfati\AppData\Local\Temp\pip-build-env-o_18jg2s\overlay\Lib\site-packages\numpy\core\include -IE:\Work\Dev\VEnvs\py_pc064_03.07_test1_q066060487\include -Ic:\Install\pc064\Python\Python\03.07\include -Ic:\Install\pc064\Python\Python\03.07\Include -IC:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\include -IC:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\ATLMFC\include -IC:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Auxiliary\VS\include "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" 
"-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcpyxdameraulevenshtein/pyxdameraulevenshtein.c /Fobuild\temp.win-amd64-cpython-37\Release\pyxdameraulevenshtein/pyxdameraulevenshtein.obj
  pyxdameraulevenshtein.c
  C:\Users\cfati\AppData\Local\Temp\pip-build-env-o_18jg2s\overlay\Lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(14) : Warning Msg: Using deprecated NumPy API, disable it with #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2240): warning C4244: '=': conversion from 'Py_ssize_t' to 'unsigned long', possible loss of data
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2271): warning C4244: '=': conversion from 'Py_ssize_t' to 'unsigned long', possible loss of data
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2358): warning C4244: '=': conversion from 'Py_ssize_t' to 'unsigned long', possible loss of data
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2434): warning C4244: '=': conversion from 'Py_ssize_t' to 'unsigned long', possible loss of data
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2957): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  creating C:\Users\cfati\AppData\Local\Temp\pip-install-t79ijgrr\pyxdameraulevenshtein_4dee1beb9a9542bb89a45fc96b191728\build\lib.win-amd64-cpython-37
  C:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:E:\Work\Dev\VEnvs\py_pc064_03.07_test1_q066060487\libs /LIBPATH:c:\Install\pc064\Python\Python\03.07\libs /LIBPATH:c:\Install\pc064\Python\Python\03.07 /LIBPATH:E:\Work\Dev\VEnvs\py_pc064_03.07_test1_q066060487\PCbuild\amd64 /LIBPATH:C:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\ATLMFC\lib\x64 /LIBPATH:C:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\lib\x64 "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22000.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22000.0\\um\x64" /EXPORT:PyInit_pyxdameraulevenshtein build\temp.win-amd64-cpython-37\Release\pyxdameraulevenshtein/pyxdameraulevenshtein.obj /OUT:build\lib.win-amd64-cpython-37\pyxdameraulevenshtein.cp37
-win_amd64.pyd /IMPLIB:build\temp.win-amd64-cpython-37\Release\pyxdameraulevenshtein\pyxdameraulevenshtein.cp37-win_amd64.lib
     Creating library build\temp.win-amd64-cpython-37\Release\pyxdameraulevenshtein\pyxdameraulevenshtein.cp37-win_amd64.lib and object build\temp.win-amd64-cpython-37\Release\pyxdameraulevenshtein\pyxdameraulevenshtein.cp37-win_amd64.exp
  Generating code
  Finished generating code
  installing to build\bdist.win-amd64\wheel
 
  # @TODO - cfati: Truncated output

  running install_scripts
  creating build\bdist.win-amd64\wheel\pyxDamerauLevenshtein-1.5.3.dist-info\WHEEL
  creating 'C:\Users\cfati\AppData\Local\Temp\pip-wheel-g6cfcj3b\.tmp-n2i1vw8v\pyxDamerauLevenshtein-1.5.3-cp37-cp37m-win_amd64.whl' and adding 'build\bdist.win-amd64\wheel' to it
  adding 'pyxdameraulevenshtein.cp37-win_amd64.pyd'
  adding 'pyxDamerauLevenshtein-1.5.3.dist-info/METADATA'
  adding 'pyxDamerauLevenshtein-1.5.3.dist-info/WHEEL'
  adding 'pyxDamerauLevenshtein-1.5.3.dist-info/top_level.txt'
  adding 'pyxDamerauLevenshtein-1.5.3.dist-info/RECORD'
  removing build\bdist.win-amd64\wheel
  C:\Users\cfati\AppData\Local\Temp\pip-build-env-o_18jg2s\overlay\Lib\site-packages\wheel\bdist_wheel.py:83: RuntimeWarning: Config variable 'Py_DEBUG' is unset, Python ABI tag may be incorrect
    if get_flag("Py_DEBUG", hasattr(sys, "gettotalrefcount"), warn=(impl == "cp")):
  C:\Users\cfati\AppData\Local\Temp\pip-build-env-o_18jg2s\overlay\Lib\site-packages\wheel\bdist_wheel.py:89: RuntimeWarning: Config variable 'WITH_PYMALLOC' is unset, Python ABI tag may be incorrect
    warn=(impl == "cp" and sys.version_info < (3, 8)),
  Building wheel for pyxdameraulevenshtein (pyproject.toml) ... done
  Created wheel for pyxdameraulevenshtein: filename=pyxDamerauLevenshtein-1.5.3-cp37-cp37m-win_amd64.whl size=24372 sha256=ced6c506896c3b1d98f8ddd165b4bf8a399287fd9f5543f2398953b479173e86
  Stored in directory: C:\Users\cfati\AppData\Local\Temp\pip-ephem-wheel-cache-6epkbo0t\wheels\b4\f5\9e\39cf91e589064ceb8a4db3b6d9b2c7f267af79f9542f2ddbb3
Successfully built pyxdameraulevenshtein
Installing collected packages: pyxdameraulevenshtein
Successfully installed pyxdameraulevenshtein-1.5.3

[prompt]>
[prompt]> :: Existing NumPy version (used at runtime)
[prompt]> python -m pip freeze
numpy==1.19.5
pyxDamerauLevenshtein==1.5.3

[prompt]>
[prompt]> python -c "from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance;print(\"Done.\")"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "__init__.pxd", line 242, in init pyxdameraulevenshtein
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject

[prompt]>
[prompt]> python -m pip install numpy==1.20.0
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting numpy==1.20.0
  Downloading numpy-1.20.0-cp37-cp37m-win_amd64.whl (13.6 MB)
     ---------------------------------------- 13.6/13.6 MB 7.0 MB/s eta 0:00:00
Installing collected packages: numpy
  Attempting uninstall: numpy
    Found existing installation: numpy 1.19.5
    Uninstalling numpy-1.19.5:
      Successfully uninstalled numpy-1.19.5
Successfully installed numpy-1.20.0

[prompt]>
[prompt]> python -m pip freeze
numpy==1.20.0
pyxDamerauLevenshtein==1.5.3

[prompt]>
[prompt]> python -c "from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance;print(\"Done.\")"
Done.

PyxDamerauLevenshtein 빌드할 때 PIP(사일런트 일시적으로 빌드에 사용)가 NumPy v1.21.6을 다운로드(이 경우에는 기존 설치 버전을 무시함)합니다.그런 다음 런타임에 v1.19.5가 사용되므로 오류가 발생합니다.

참고: 최신 PyxDamerauLevenshtein 버전(응답 시 v1.7.1)에서는 문제를 더 이상 재현할 수 없습니다.

반전

질문에서 언급한 처럼 Python 3.6에서 작동하는 것처럼 보입니다.

처음에 저는 이 부분()#1이 범인이라고 생각했습니다.

+     if (_buffer_info_free(fa->_buffer_info, (PyObject *)self) < 0) {
+         PyErr_WriteUnraisable(NULL);
+     }

[파이썬 3.7]Docs]: void PyErr_WriteUnraisable(PyObject *obj) 상태(v3.7의 경우, v3.6의 경우 아님):

이 함수를 호출할 때는 예외를 설정해야 합니다.

거기서부터 [GitHub]: python/cpython - (v3.7.0) cpython/Python/errors.c#206에서 PyEr_GivenExceptionMatchesv3.6.15보다 엄격한 것으로 보이며 NULL을 통과할 때 예외가 발생하지 않습니다.

하지만 제가 틀렸습니다. 일은 훨씬 더 간단합니다.

(py_pc064_03.06_test1_q066060487) [cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q066060487]> :: Python 3.6 console
(py_pc064_03.06_test1_q066060487) [cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q066060487]> sopr.bat
### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###

[prompt]>
[prompt]> python -c "import sys;print(\"\n\".join((sys.executable, sys.version)))"
e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\Scripts\python.exe
3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]

[prompt]>
[prompt]> python -m pip freeze

[prompt]>
[prompt]> python -m pip install numpy==1.19.5
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting numpy==1.19.5
  Downloading numpy-1.19.5-cp36-cp36m-win_amd64.whl (13.2 MB)
     |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 13.2 MB 1.6 MB/s
Installing collected packages: numpy
Successfully installed numpy-1.19.5

[prompt]>
[prompt]> python -m pip freeze
numpy==1.19.5

[prompt]>
[prompt]> :: Pass -v (again) to see what is actually going on. I`ll truncate some output
[prompt]>
[prompt]> python -m pip install -v pyxdameraulevenshtein==1.5.3
Using pip 21.3.1 from e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\lib\site-packages\pip (python 3.6)
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting pyxdameraulevenshtein==1.5.3
  Downloading pyxDamerauLevenshtein-1.5.3.tar.gz (58 kB)
     |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 58 kB 1.6 MB/s
  Running command 'e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\Scripts\python.exe' 'e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\cfati\AppData\Local\Temp\pip-build-env-h6hif14f\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --extra-index-url https://pypi.ngc.nvidia.com --trusted-host pypi.ngc.nvidia.com -- 'setuptools>=40.8.0' 'wheel>=0.33.1' 'numpy>=1.16.1'
  Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com, https://pypi.ngc.nvidia.com
  Collecting setuptools>=40.8.0
    Downloading setuptools-59.6.0-py3-none-any.whl (952 kB)
  Collecting wheel>=0.33.1
    Downloading wheel-0.37.1-py2.py3-none-any.whl (35 kB)
  Collecting numpy>=1.16.1
    Downloading numpy-1.19.5-cp36-cp36m-win_amd64.whl (13.2 MB)
  Installing collected packages: wheel, setuptools, numpy
  Successfully installed numpy-1.19.5 setuptools-59.6.0 wheel-0.37.1
  Installing build dependencies ... done
  Running command 'e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\Scripts\python.exe' 'e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py' get_requires_for_build_wheel 'C:\Users\cfati\AppData\Local\Temp\tmpfdchqls9'
  running egg_info

  # @TODO - cfati: Truncated output

  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy>=1.16.1 in e:\work\dev\venvs\py_pc064_03.06_test1_q066060487\lib\site-packages (from pyxdameraulevenshtein==1.5.3) (1.19.5)
Building wheels for collected packages: pyxdameraulevenshtein
  Running command 'e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\Scripts\python.exe' 'e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py' build_wheel 'C:\Users\cfati\AppData\Local\Temp\tmp0_edf2js'
  running bdist_wheel
  running build
  running build_ext
  building 'pyxdameraulevenshtein' extension
  creating build
  creating build\temp.win-amd64-3.6
  creating build\temp.win-amd64-3.6\Release
  creating build\temp.win-amd64-3.6\Release\pyxdameraulevenshtein
  C:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\cfati\AppData\Local\Temp\pip-build-env-h6hif14f\overlay\Lib\site-packages\numpy\core\include -Ic:\Install\pc064\Python\Python\03.06.08\include -Ic:\Install\pc064\Python\Python\03.06.08\include -IC:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\include -IC:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\ATLMFC\include -IC:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Auxiliary\VS\include "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\in
clude\um" /Tcpyxdameraulevenshtein/pyxdameraulevenshtein.c /Fobuild\temp.win-amd64-3.6\Release\pyxdameraulevenshtein/pyxdameraulevenshtein.obj
  pyxdameraulevenshtein.c
  C:\Users\cfati\AppData\Local\Temp\pip-build-env-h6hif14f\overlay\Lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(14) : Warning Msg: Using deprecated NumPy API, disable it with #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2240): warning C4244: '=': conversion from 'Py_ssize_t' to 'unsigned long', possible loss of data
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2271): warning C4244: '=': conversion from 'Py_ssize_t' to 'unsigned long', possible loss of data
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2358): warning C4244: '=': conversion from 'Py_ssize_t' to 'unsigned long', possible loss of data
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2434): warning C4244: '=': conversion from 'Py_ssize_t' to 'unsigned long', possible loss of data
  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2957): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  creating C:\Users\cfati\AppData\Local\Temp\pip-install-jbo5i6wm\pyxdameraulevenshtein_f0a231227bfc404898102cc0b821c01c\build\lib.win-amd64-3.6
  C:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:c:\Install\pc064\Python\Python\03.06.08\Libs /LIBPATH:e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\libs /LIBPATH:e:\Work\Dev\VEnvs\py_pc064_03.06_test1_q066060487\PCbuild\amd64 /LIBPATH:C:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\ATLMFC\lib\x64 /LIBPATH:C:\Install\pc064\Microsoft\VisualStudioCommunity\2022\VC\Tools\MSVC\14.34.31933\lib\x64 "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22000.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22000.0\\um\x64" /EXPORT:PyInit_pyxdameraulevenshtein build\temp.win-amd64-3.6\Release\pyxdameraulevenshtein/pyxdameraulevenshtein.obj /OUT:build\lib.win-amd64-3.6\pyxdameraulevenshtein.cp36-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.6\Release\p
yxdameraulevenshtein\pyxdameraulevenshtein.cp36-win_amd64.lib
     Creating library build\temp.win-amd64-3.6\Release\pyxdameraulevenshtein\pyxdameraulevenshtein.cp36-win_amd64.lib and object build\temp.win-amd64-3.6\Release\pyxdameraulevenshtein\pyxdameraulevenshtein.cp36-win_amd64.exp
  Generating code
  Finished generating code
  installing to build\bdist.win-amd64\wheel

  # @TODO - cfati: Truncated output

  running install_scripts
  creating build\bdist.win-amd64\wheel\pyxDamerauLevenshtein-1.5.3.dist-info\WHEEL
  creating 'C:\Users\cfati\AppData\Local\Temp\pip-wheel-wpe1zd_h\tmpdhak06i5\pyxDamerauLevenshtein-1.5.3-cp36-cp36m-win_amd64.whl' and adding 'build\bdist.win-amd64\wheel' to it
  adding 'pyxdameraulevenshtein.cp36-win_amd64.pyd'
  adding 'pyxDamerauLevenshtein-1.5.3.dist-info/METADATA'
  adding 'pyxDamerauLevenshtein-1.5.3.dist-info/WHEEL'
  adding 'pyxDamerauLevenshtein-1.5.3.dist-info/top_level.txt'
  adding 'pyxDamerauLevenshtein-1.5.3.dist-info/RECORD'
  removing build\bdist.win-amd64\wheel
  C:\Users\cfati\AppData\Local\Temp\pip-build-env-h6hif14f\overlay\Lib\site-packages\wheel\bdist_wheel.py:82: RuntimeWarning: Config variable 'Py_DEBUG' is unset, Python ABI tag may be incorrect
    warn=(impl == 'cp')):
  C:\Users\cfati\AppData\Local\Temp\pip-build-env-h6hif14f\overlay\Lib\site-packages\wheel\bdist_wheel.py:87: RuntimeWarning: Config variable 'WITH_PYMALLOC' is unset, Python ABI tag may be incorrect
    sys.version_info < (3, 8))) \
  Building wheel for pyxdameraulevenshtein (pyproject.toml) ... done
  Created wheel for pyxdameraulevenshtein: filename=pyxDamerauLevenshtein-1.5.3-cp36-cp36m-win_amd64.whl size=27385 sha256=e17febb7db9cbe5e7726c486367b189bbd8b07d93c845ab580ee69f652eed002
  Stored in directory: C:\Users\cfati\AppData\Local\Temp\pip-ephem-wheel-cache-g6lraow9\wheels\ab\e3\f3\34dfd385a44f053693d576e00ea4a6f4beb73366f7237271cf
Successfully built pyxdameraulevenshtein
Installing collected packages: pyxdameraulevenshtein
Successfully installed pyxdameraulevenshtein-1.5.3
  Link requires a different Python (3.6.8 not in: '>=3.7'): https://files.pythonhosted.org/packages/9f/8b/a094f5da22d7abf5098205367b3296dd15b914f4232af5ca39ba6214d08c/pip-22.0-py3-none-any.whl#sha256=6cb1ea2bd7fda0668e26ae8c3e45188f301a7ef17ff22efe1f70f3643e56a822 (from https://pypi.org/simple/pip/) (requires-python:>=3.7)

  # @TODO - cfati: Truncated output 


[prompt]>
[prompt]> python -m pip freeze
numpy==1.19.5
pyxDamerauLevenshtein==1.5.3

[prompt]>
[prompt]> python -c "from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance;print(\"Done.\")"
Done.

따라서 Python 3.6에서는 최신(빌트된) NumPy 버전v1.19.5이기 때문에 이 시나리오를 사용할 수 없습니다.

결론

저는 요점을 증명하기 위해 의도적으로 이 (간체) 시나리오(MCVE)를 실행했습니다.
일반 사용자는 일반적으로 이전 버전의 NumPy에 의존하는 패키지를 설치할 때 해당 패키지에 액세스합니다.그러나 새로운 패키지 버전(새로운 종속 버전 포함)이 계속 등장하기 때문에 시간이 지남에 따라 패키지를 실행할 가능성은 사라집니다.

그러나 누군가가 이 문제에 부딪혔을 경우 이 문제를 해결하기 위한 여러 가지 (일반적인) 지침이 있습니다.

  1. PyxDamerauLevenshtein 설치하기 전에 NumPy >= v1.20.0을 설치(업그레이드)하십시오(또는 더 나은 버전: 더 이상 이전 버전을 사용하지 않음).

  2. PyxDamerauLevenshtein >= v1.7.0 설치

  3. PIP([PyPA]를 지시합니다.PIP]: pip install)을(를) 업그레이드하지 않음

  4. PyxDamerauLevenshtein을 "수동으로" 구축(python setup.py build), 그 경우와 마찬가지로 기존 NumPy 버전이 사용되고 있다는 것을 알게 되었습니다(이것은 사람들이 예상하는 것입니다(그리고 PIP는 사용되지 않습니다).

  • 이는 다른 패키지에도 적용될 수 있으며 추가적인 제한이 있을 수 있습니다.

  • 전체적으로

    • 확인:

      • 필요한 패키지를 모두 설치한 후(NumPy를 <= v1.19.5다운그레이드할 수 있음)

      • 지속적으로(패키지 설치가 연속 프로세스인 경우)

      NumPy 버전(pythnon -m pip freeze), 그리고 만약 그렇다면, 그것을 업그레이드하세요 (python -m pip upgrade numpy)

관련(대략):

이것은 저에게 효과가 있었습니다(이 페이지의 다른 어떤 것도 효과가 없었을 때).

# 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)으로 실험합니다.

참조:이것이 작동하는 이유를 설명하는 @FZeizer의 훌륭한 답변입니다.

패키지를 pip 설치한 후 커널을 재시작하고 작동해야 합니다.일반적으로 패키지는 자동으로 업그레이드되며 필요한 것은 빠른 재시작뿐입니다.적어도 이것이 제 상황에서 작동했고 석류를 설치하고 사용하려고 했을 때 같은 오류가 발생했습니다.

하고 python 설치하기gensimvmdk:

pip install gensim==3.8.3

python3.10.4, numpy1.21.5에서도 동일한 문제가 발생했습니다. pip 제거 numpy 및 pip 설치 numpy를 통해 numpy를 1.22.3으로 업데이트한 후에야 해결했습니다.pip install --upgrade numpy만 작동하지 않았습니다.

PSD:\quant\vnpy-master\examples\veighna_trader> python .\run.py 트레이스백(최신 호출 마지막):파일 "D:\quant\vnpy-master\examples\veighna_trader\run.py ", 31행, vnpy_optionmaster 가져오기 OptionMasterApp 파일 "D:\it_soft\python3.10.4"\Lib\site-packages\vnpy_optionmaster__init_.py", 26행, .engine 가져오기 옵션 엔진, APP_NAME 파일 "D:\it_soft\python3.10.4"\Lib\site-packages\vnpy_optionmaster\engine.py ", 34행, .dll 가져오기이항_tree_cython 파일 "init_tree_cython.py", 1행, init이항_tree_cython ValueError: numpy.ndarray size가 변경된 경우 이진 비호환성을 나타낼 수 있습니다.C 헤더에서 96이 필요하고 PyObject에서 88이 필요합니다.

거의 동일한 이미지의 경우: python:3.7-slim-buster

저는 오늘부터 이 문제를 겪기 시작했습니다. 이전에는 이 문제가 발생하지 않았습니다.

저는 요구 사항에서 numpy를 제거하여 해결했습니다.txt 파일을 사용하고 대신 내 도커 파일에서 다음을 수행합니다.

RUN pip3 install --upgrade  --no-binary numpy==1.18.1 numpy==1.18.1 \
&& pip3 install -r requirements.txt 

저는 케라와 그 라이브러리의 오래된 버전을 사용하고 있으며 numpy 1.20.0으로 업트레이드하는 것은 그 라이브러리들에게 효과가 없었습니다.하지만 제 생각에 해결책은 제가 당신에게 numpy를 컴파일하지 말고 미리 컴파일된 버전을 다운로드하라고 지시한 첫 번째 명령에 있습니다.

명령어의 요령은 사람들이 문제를 해결하기 위해 pip-no-binary 옵션을 사용하라고 말하는 것을 발견할 수 있다는 것입니다. 하지만 그들은 어떻게 그리고 그것이 까다로울 수 있는지를 명시하지 않습니다. 당신은 그것이 작동하기 위해 명령어에 패키지를 두 번 써야 합니다. 그렇지 않으면 pip이 당신에게 오류를 던질 것입니다.

첫 번째 명령에서 --upgrade 옵션이 필요하지 않다고 생각합니다.

numpy 버전 업그레이드:

pip install -U numpy

는 이 할 수 없었습니다. 이 패키지는 numpy를 필요로 합니다.numpy<=1.21.0 »numpy.ndarray size changed, may indicate binary incompatibility개인 패키지에서 생성되었습니다.해결책은 다음을 수정하는 것이었습니다.pyproject.toml . . . . . . . . . . . . . . . . . . . . . . . . ?

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

에 이에설정된으로 된."numpy>=1.21.0"오류의 원인이 됩니다.

Gensim의 이전 버전을 설치하면 작동합니다!

pip install gensim==3.5.0

또는

conda install gensim==3.5.0

언급URL : https://stackoverflow.com/questions/66060487/valueerror-numpy-ndarray-size-changed-may-indicate-binary-incompatibility-exp

반응형