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
버전의 최신제호않는과 되지 않습니다.numpy
version 은 버필 (요전)를 필요로 .~=1.19.2
).
이미 FZeizer의 답변에서 언급했듯이, 변화가 있었습니다.numpy
버의전 SC 1.20.0
이C를 들어, 할때이에있의존하키습다패니가지빌는드▁that▁there있다▁e▁c습니▁are▁api패,키▁are빌▁this가g▁when▁packages.pyxdameraulevenshtein
점을 하면,pip
종속성 해결 프로그램은 패키지 설치 순서를 보장하지 않습니다. 다음과 같은 상황이 발생할 수 있습니다.
pip
를 설치해야 되었습니다.numpy
버전인 그고최신버선전택니다합을리▁the,다▁version▁latest▁chooses▁and니선▁it택을 선택합니다.1.21.2
이 답변을 작성할 당시 기준으로- 그런 다음 다음 다음에 의존하는 패키지를 구축합니다.
numpy
를 들어 그예 C API, 를들어고.pyxdameraulevenshtein
이패는이호다니환됩다과음과 됩니다.numpy 1.21.2
C API. - 에 중에나▁at.
pip
의 의이버대요사구있항패는설합치니다야해를키에 사항이 .numpy
를 들어, 예를 들어, 기호입니다.tensorflow==2.6.0
.numpy==1.19.5
.결적로으과.numpy==1.21.2
가 제거되고 이전 버전이 설치됩니다. - 를사하는코실때행할을 할 때
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_ 변경된 상태 크기:
PyArrayObject 및 PyVoidScalarObject 구조의 크기가 변경되었습니다.다음 헤더 정의가 제거되었습니다.
#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 */
오류 메시지(80 및 88)의 숫자가 어느 정도 의미를 갖기 시작했습니다.
위의 두 버전 사이에는 경계가 있습니다. 한 버전으로 빌드되고 다른 버전으로 실행되는 모든 버전은 지원되지 않는 시나리오입니다.마치 다른 라이브러리를 잘못 사용하는 것과 같습니다. 두 버전이 API/ABI가 호환되지 않을 때 한 버전(헤더 및 .so(.lib))으로 빌드하고 다른 버전(.so(.dll)으로 실행하는 것입니다.
두 가지 사례가 나타납니다.
빌드: v > = v1.20.0, 실행: v < = v1.19.5: 지원되지 않음
빌드: v <= v1.19.5, 실행: v > = v1.20.0: 기술적으로도 지원되지 않지만 컴파일(성공) 시간에 계산된 값이 더 이상 없기 때문에([SO]: CLR Windows Form의 LNK2005 오류(@CristiFati의 답변) 작동합니다.
[GitHub]: numpy/numpy - ENH, API: 어레이에 내보낸 버퍼 정보 저장은 변경 사항을 적용한 커밋입니다.
PyxDamerauLevenshtein
[GitHub]: lanl/pyxDamerauLevenshtein - pyxDamerauLevenshtein은 NumPy에 의존하는 확장 모듈(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_GivenExceptionMatches는 v3.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에 의존하는 패키지를 설치할 때 해당 패키지에 액세스합니다.그러나 새로운 패키지 버전(새로운 종속 버전 포함)이 계속 등장하기 때문에 시간이 지남에 따라 패키지를 실행할 가능성은 사라집니다.
그러나 누군가가 이 문제에 부딪혔을 경우 이 문제를 해결하기 위한 여러 가지 (일반적인) 지침이 있습니다.
PyxDamerauLevenshtein을 설치하기 전에 NumPy >= v1.20.0을 설치(업그레이드)하십시오(또는 더 나은 버전: 더 이상 이전 버전을 사용하지 않음).
PyxDamerauLevenshtein >= v1.7.0 설치
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 설치하기gensim
vmdk:
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
'programing' 카테고리의 다른 글
PL/SQL 버그입니까? (0) | 2023.08.29 |
---|---|
olingo v2에서 BLOB와 CLOB를 어떻게 처리합니까? (0) | 2023.08.29 |
ASP를 사용하는 JSONP.NET 웹 API (0) | 2023.08.29 |
전역 오류 처리를 정의하기 위한 jQuery의 $.ajax() 메서드 랩 (0) | 2023.08.29 |
jQuery에서 창의 높이와 스크롤 위치를 어떻게 결정합니까? (0) | 2023.08.29 |