ValueError:numpy.ndarray 大小已更改,可能表示二进制不兼容。预期来自 C 头文件的 88,来自 PyObject 的 80

Sac*_*ani 73 python numpy pandas scikit-learn python-3.7

从 pyxdameraulevenshtein 导入会出现以下错误,我有

pyxdameraulevenshtein==1.5.3, 
pandas==1.1.4 and 
scikit-learn==0.20.2. 
Numpy is 1.16.1. 
Works well in Python3.6, Issue in Python3.7.
Run Code Online (Sandbox Code Playgroud)

有没有人在 Python3.7 (3.7.9)、docker image - python:3.7-buster 上遇到过类似的问题

__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
Run Code Online (Sandbox Code Playgroud)

小智 107

我在 Python 3.8.5 中。这听起来太简单了,但我遇到了同样的问题,我所做的就是重新安装 numpy。走了。

pip uninstall numpy
pip install numpy
Run Code Online (Sandbox Code Playgroud)

  • 哈哈哈...我不敢相信这对我也有用!有关更多信息,我也在 Python 3.8.5 中。看起来我最初有“numpy-1.19.5”,然后在卸载安装步骤之后我得到了“numpy-1.20.1” (9认同)
  • 我必须执行 pip install --upgrade numpy 才能升级它。 (4认同)
  • 如果您使用的是 conda 而不是 pip 呢? (4认同)
  • 经典的做法是拔掉电源插头,然后将其重新插入解决方案。工作频率比您想象的要高。 (2认同)

小智 31

尝试numpy==1.20.0在这里工作,即使其他情况不同(高山 3.12 上的 python3.8)。

  • 遇到了同样的问题,通过将 numpy 升级到 1.20.3 修复 (3认同)
  • `numpy==1.20.1` 已经修复了错误:-) (2认同)

Iva*_*kov 30

无需升级的解决方案numpy

虽然升级numpy版本通常可以解决问题,但并不总是可行。tensorflow==2.6.0一个很好的例子是当您使用与最新版本不兼容的情况时numpy(它需要~=1.19.2)。

正如FZeiser 的回答numpy中已经提到的,版本中的 s C API发生了变化1.20.0。有些包在构建时依赖于此 C API,例如pyxdameraulevenshtein. 鉴于pips 依赖解析器不保证安装包的任何顺序,可能会发生以下情况:

  1. pip发现它需要安装numpy并选择最新版本,1.21.2截至撰写此答案时。
  2. 然后它构建一个依赖于其numpyC API 的包,例如pyxdameraulevenshtein. 该包现在与 C API 兼容numpy 1.21.2
  3. 稍后pip需要安装一个需要旧版本的软件包numpy,例如tensorflow==2.6.0,它将尝试安装numpy==1.19.5。结果,numpy==1.21.2被卸载并安装旧版本。
  4. 当运行使用 的代码时pyxdameraulevenshtein,其当前安装依赖于更新的numpyC API,但numpy版本已降级,这会导致错误。

解决方案

您应该使用过时的 C API 用法重建包numpy,以确保它与当前安装的numpy. 例如对于pyxdameraulevenshtein

pip uninstall pyxdameraulevenshtein
pip install pyxdameraulevenshtein --no-binary pyxdameraulevenshtein
Run Code Online (Sandbox Code Playgroud)


小智 12

事实上,(构建和)安装numpy>=1.20.0应该可以工作,正如下面的这个答案所指出的那样。但是,我认为一些背景可能很有趣——并且还提供了替代解决方案。

有一个C API的变革numpy 1.20.0。在某些情况下,pip似乎numpy为构建阶段下载了最新版本的numpy. 如果在 中使用了构建版本<1.20,而安装的版本是=>1.20,这将导致错误。

(由于向后兼容性,它的另一种方式应该无关紧要。但如果使用已安装的版本numpy<1.20,他们就没有预料到即将发生的变化。)

这导致了解决问题的几种可能方法:

  • 升级到 numpy>=1.20.0
  • 使用minmum支持numpy的在pyproject.toml版本(oldest-supported-numpy
  • 安装 --no-binary
  • 安装 --no-build-isolation

有关潜在解决方案的更详细讨论,请参阅 https://github.com/scikit-learn-contrib/hdbscan/issues/457#issuecomment-773671043


小智 10

我在使用 tensorflow 对象 api 时遇到了这个问题。Tensorflow 目前与 numpy==1.20 不兼容(尽管这个问题直到后来才显现出来)。就我而言,问题是由 pycocotools 引起的。我通过安装旧版本来修复。

pip install pycocotools==2.0.0
Run Code Online (Sandbox Code Playgroud)

  • 它有自己的问题 - 安装时它会删除现有的 cython 安装,然后输出 ModuleNotFoundError: No module named 'Cython' (2认同)

Cha*_*ker 8

对我有用的是:

pip uninstall numpy
conda install -y -c conda-forge numpy
Run Code Online (Sandbox Code Playgroud)

尽管听起来很奇怪……我什至不需要用 Conda 来卸载它,这对我来说似乎很奇怪。我正在使用 python 3.9


小智 8

将 python 版本升级到 numpy ==1.21.1 对我有用!


Cri*_*ati 8

这是 [SO] 的更详细版本:ValueError: numpy.ndarray sizechanged, may indicates binary incompatibility。预计 C 标头为 88,从 PyObject 得到 80 - (@FZeiser\'s 答案)顺便说一句,很好的答案)。

\n

简而言之,这是ABI更改(在NumPy中)。
\n因此,在任何情况下,2 个版本(有更改没有更改)都不应混合在一起。
\n错误消息(对某些用户有误导性)来自PyxDamerauLevenshtein

\n

1.NumPy

\n

[NumPy]:NumPy 1.20.0发行说明 - np.ndarray 和 np.void_ 的大小已更改状态:

\n
\n

PyArrayObjectPyVoidScalarObject的大小已更改。以下标头定义已被删除:

\n
#define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields))\n
Run Code Online (Sandbox Code Playgroud)\n

因为大小不能被视为编译时常量:它会根据 NumPy 的不同运行时版本而变化。

\n

最可能的相关用途是用 C 编写的潜在子类,这些子类必须重新编译并应该更新。请参阅PyArrayObject的文档了解更多详细信息,如果您受到此更改的影响,请联系 NumPy 开发人员。

\n

NumPy 将尝试给出一个优雅的错误,但期望固定结构大小的程序可能具有未定义的行为并可能崩溃。

\n
\n

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

\n
#define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields))\n
Run Code Online (Sandbox Code Playgroud)\n

最后一个拥有它的版本,在后续版本中,从v1.20.0(及其之前的RC)开始,该行被注释掉。\n这里还值得一提的是,在相同版本之间,一个新成员已添加到PyArrayObject_fields
(末尾)(上面约 20 行):

\n
void *_buffer_info;  /* private buffer info, tagged to allow warning */\n
Run Code Online (Sandbox Code Playgroud)\n

错误消息中的数字(8088)开始有意义。

\n

(以上)两个版本之间存在边界:使用一个版本构建并使用另一个版本运行的任何内容都是不受支持的场景。这就像滥用任何其他库一样:使用一个版本的(头文件和.so ( .lib ) )构建并使用另一个版本(的.so ( .dll ) )运行 - 当两个版本是API / ABI时不相容。

\n

出现2个案例:

\n
    \n
  1. 构建:v >= v1.20.0,运行:v <= v1.19.5:不支持

    \n
  2. \n
  3. 构建:v <= v1.19.5,运行:v >= v1.20.0:技术上也不支持,但由于在编译(预处理)时不再计算任何值([SO]:CLR Windows 窗体中的 LNK2005 错误( @CristiFati 的回答)),它会起作用

    \n
  4. \n
\n

[GitHub]:numpy/numpy - ENH,API:在数组上存储导出的缓冲区信息 (1)是引入更改的提交。

\n

2.PyxDamerauLevenshtein

\n

[GitHub]:lanl/pyxDamerauLevenshtein - pyxDamerauLevenshtein是一个依赖于NumPy 的扩展模块(C + Cython ) 。源代码(间接)包括ndarraytypes.h

\n

浏览[PyPI]:pyxDamerauLevenshtein(至少是最新版本)只有一种二进制文件:适用于OSX pc064和一个Python版本(可能是包发布时的LTS )。
\n因此,在所有其他平台上pip install编辑时,它都是从源代码构建的

\n

为了简单起见,将使用v1.5.3(如问题中所示)。
\n顺便说一句,虽然setup.py需要NumPy >= v1.16.1,但有一个包含v1.16.1的requirements.txt文件作为依赖项(这有点误导 - 特别是在浅层调查时)。

\n

该错误消息是在v1.5.1中添加的(专门针对此NumPy ABI更改),然后在构建时尝试摆脱对NumPy 的依赖时,在v1.7.0中将其删除。我想这是因为经常遇到这种情况而产生的噩梦(其他软件包取决于特定的NumPy版本)。\n删除提交:[GitHub]:lanl/pyxDamerauLevenshtein - 第一次尝试摆脱 NumPy

\n

3. 示例

\n

一旦弄清楚了理论,重现问题就不难了。
\n步骤:

\n
    \n
  • 安装NumPy <= v1.19.5 ( v1.19.5 )

    \n
  • \n
  • 安装PyxDamerauLevenshtein v1.5.3

    \n
  • \n
\n

我在Win上准备了“演示” ,因为它恰好是我当前启动的操作系统。
\n还有一些附加命令可以捕获进程中的状态(在多个点)。一些(不重要的)输出也将被删除:

\n
\n
(py_pc064_03.07_test1_q066060487) [cfati@CFATI-5510-0:e:\\Work\\Dev\\StackOverflow\\q066060487]> :: Python 3.7 console\n(py_pc064_03.07_test1_q066060487) [cfati@CFATI-5510-0:e:\\Work\\Dev\\StackOverflow\\q066060487]> sopr.bat\n### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###\n\n[prompt]>\n[prompt]> python -c "import sys;print(\\"\\n\\".join((sys.executable, sys.version)))"\nE:\\Work\\Dev\\VEnvs\\py_pc064_03.07_test1_q066060487\\Scripts\\python.exe\n3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)]\n\n[prompt]>\n[prompt]> python -m pip freeze\n\n[prompt]>\n[prompt]> python -m pip install numpy==1.19.5\nLooking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\nCollecting numpy==1.19.5\n  Downloading numpy-1.19.5-cp37-cp37m-win_amd64.whl (13.2 MB)\n     ---------------------------------------- 13.2/13.2 MB 8.5 MB/s eta 0:00:00\nInstalling collected packages: numpy\nSuccessfully installed numpy-1.19.5\n\n[prompt]>\n[prompt]> python -m pip freeze\nnumpy==1.19.5\n\n[prompt]>\n[prompt]> :: Pass -v to see what is actually going on. I`ll truncate some output\n[prompt]>\n[prompt]> python -m pip install -v pyxdameraulevenshtein==1.5.3\nUsing pip 22.3.1 from E:\\Work\\Dev\\VEnvs\\py_pc064_03.07_test1_q066060487\\lib\\site-packages\\pip (python 3.7)\nLooking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\nCollecting pyxdameraulevenshtein==1.5.3\n  Downloading pyxDamerauLevenshtein-1.5.3.tar.gz (58 kB)\n     ---------------------------------------- 58.5/58.5 kB 1.0 MB/s eta 0:00:00\n  Running command pip subprocess to install build dependencies\n  Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com, https://pypi.ngc.nvidia.com\n  Collecting setuptools>=40.8.0\n    Downloading setuptools-66.0.0-py3-none-any.whl (1.3 MB)\n       ---------------------------------------- 1.3/1.3 MB 5.0 MB/s eta 0:00:00\n  Collecting wheel>=0.33.1\n    Downloading wheel-0.38.4-py3-none-any.whl (36 kB)\n  Collecting numpy>=1.16.1\n    Downloading numpy-1.21.6-cp37-cp37m-win_amd64.whl (14.0 MB)\n       ---------------------------------------- 14.0/14.0 MB 9.2 MB/s eta 0:00:00\n  Installing collected packages: wheel, setuptools, numpy\n\n  # @TODO - cfati: !!! Check NumPy version used at build time !!!\n\n  Successfully installed numpy-1.21.6 setuptools-66.0.0 wheel-0.38.4\n  Installing build dependencies ... done\n  Running command Getting requirements to build wheel\n  running egg_info\n\n  # @TODO - cfati: Truncated output\n\n   Preparing metadata (pyproject.toml) ... done\nRequirement 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)\nBuilding wheels for collected packages: pyxdameraulevenshtein\n  Running command Building wheel for pyxdameraulevenshtein (pyproject.toml)\n  running bdist_wheel\n  running build\n  running build_ext\n  building \'pyxdameraulevenshtein\' extension\n  creating build\n  creating build\\temp.win-amd64-cpython-37\n  creating build\\temp.win-amd64-cpython-37\\Release\n  creating build\\temp.win-amd64-cpython-37\\Release\\pyxdameraulevenshtein\n  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" \n"-IC:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" /Tcpyxdameraulevenshtein/pyxdameraulevenshtein.c /Fobuild\\temp.win-amd64-cpython-37\\Release\\pyxdameraulevenshtein/pyxdameraulevenshtein.obj\n  pyxdameraulevenshtein.c\n  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\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2240): warning C4244: \'=\': conversion from \'Py_ssize_t\' to \'unsigned long\', possible loss of data\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2271): warning C4244: \'=\': conversion from \'Py_ssize_t\' to \'unsigned long\', possible loss of data\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2358): warning C4244: \'=\': conversion from \'Py_ssize_t\' to \'unsigned long\', possible loss of data\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2434): warning C4244: \'=\': conversion from \'Py_ssize_t\' to \'unsigned long\', possible loss of data\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2957): warning C4244: \'=\': conversion from \'double\' to \'float\', possible loss of data\n  creating C:\\Users\\cfati\\AppData\\Local\\Temp\\pip-install-t79ijgrr\\pyxdameraulevenshtein_4dee1beb9a9542bb89a45fc96b191728\\build\\lib.win-amd64-cpython-37\n  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\n-win_amd64.pyd /IMPLIB:build\\temp.win-amd64-cpython-37\\Release\\pyxdameraulevenshtein\\pyxdameraulevenshtein.cp37-win_amd64.lib\n     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\n  Generating code\n  Finished generating code\n  installing to build\\bdist.win-amd64\\wheel\n \n  # @TODO - cfati: Truncated output\n\n  running install_scripts\n  creating build\\bdist.win-amd64\\wheel\\pyxDamerauLevenshtein-1.5.3.dist-info\\WHEEL\n  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\n  adding \'pyxdameraulevenshtein.cp37-win_amd64.pyd\'\n  adding \'pyxDamerauLevenshtein-1.5.3.dist-info/METADATA\'\n  adding \'pyxDamerauLevenshtein-1.5.3.dist-info/WHEEL\'\n  adding \'pyxDamerauLevenshtein-1.5.3.dist-info/top_level.txt\'\n  adding \'pyxDamerauLevenshtein-1.5.3.dist-info/RECORD\'\n  removing build\\bdist.win-amd64\\wheel\n  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\n    if get_flag("Py_DEBUG", hasattr(sys, "gettotalrefcount"), warn=(impl == "cp")):\n  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\n    warn=(impl == "cp" and sys.version_info < (3, 8)),\n  Building wheel for pyxdameraulevenshtein (pyproject.toml) ... done\n  Created wheel for pyxdameraulevenshtein: filename=pyxDamerauLevenshtein-1.5.3-cp37-cp37m-win_amd64.whl size=24372 sha256=ced6c506896c3b1d98f8ddd165b4bf8a399287fd9f5543f2398953b479173e86\n  Stored in directory: C:\\Users\\cfati\\AppData\\Local\\Temp\\pip-ephem-wheel-cache-6epkbo0t\\wheels\\b4\\f5\\9e\\39cf91e589064ceb8a4db3b6d9b2c7f267af79f9542f2ddbb3\nSuccessfully built pyxdameraulevenshtein\nInstalling collected packages: pyxdameraulevenshtein\nSuccessfully installed pyxdameraulevenshtein-1.5.3\n\n[prompt]>\n[prompt]> :: Existing NumPy version (used at runtime)\n[prompt]> python -m pip freeze\nnumpy==1.19.5\npyxDamerauLevenshtein==1.5.3\n\n[prompt]>\n[prompt]> python -c "from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance;print(\\"Done.\\")"\nTraceback (most recent call last):\n  File "<string>", line 1, in <module>\n  File "__init__.pxd", line 242, in init pyxdameraulevenshtein\nValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject\n\n[prompt]>\n[prompt]> python -m pip install numpy==1.20.0\nLooking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\nCollecting numpy==1.20.0\n  Downloading numpy-1.20.0-cp37-cp37m-win_amd64.whl (13.6 MB)\n     ---------------------------------------- 13.6/13.6 MB 7.0 MB/s eta 0:00:00\nInstalling collected packages: numpy\n  Attempting uninstall: numpy\n    Found existing installation: numpy 1.19.5\n    Uninstalling numpy-1.19.5:\n      Successfully uninstalled numpy-1.19.5\nSuccessfully installed numpy-1.20.0\n\n[prompt]>\n[prompt]> python -m pip freeze\nnumpy==1.20.0\npyxDamerauLevenshtein==1.5.3\n\n[prompt]>\n[prompt]> python -c "from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance;print(\\"Done.\\")"\nDone.\n
Run Code Online (Sandbox Code Playgroud)\n
\n

原因非常清楚(尽管隐藏在详细输出中):构建PyxDamerauLevenshtein时,PIP(静默且临时)下载(并用于构建)NumPy v1.21.6(在本例中),忽略现有安装的版本。然后,在运行时使用v1.19.5,因此出现错误。

\n

注意:最新的PyxDamerauLevenshtein版本(回答时为v1.7.1 )不再重现该问题

\n

4. 一个转折

\n

正如问题中提到的,事情似乎适用于Python 3. 6

\n

一开始我认为提交的这一部分(#1)是罪魁祸首:

\n
(py_pc064_03.07_test1_q066060487) [cfati@CFATI-5510-0:e:\\Work\\Dev\\StackOverflow\\q066060487]> :: Python 3.7 console\n(py_pc064_03.07_test1_q066060487) [cfati@CFATI-5510-0:e:\\Work\\Dev\\StackOverflow\\q066060487]> sopr.bat\n### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###\n\n[prompt]>\n[prompt]> python -c "import sys;print(\\"\\n\\".join((sys.executable, sys.version)))"\nE:\\Work\\Dev\\VEnvs\\py_pc064_03.07_test1_q066060487\\Scripts\\python.exe\n3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)]\n\n[prompt]>\n[prompt]> python -m pip freeze\n\n[prompt]>\n[prompt]> python -m pip install numpy==1.19.5\nLooking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\nCollecting numpy==1.19.5\n  Downloading numpy-1.19.5-cp37-cp37m-win_amd64.whl (13.2 MB)\n     ---------------------------------------- 13.2/13.2 MB 8.5 MB/s eta 0:00:00\nInstalling collected packages: numpy\nSuccessfully installed numpy-1.19.5\n\n[prompt]>\n[prompt]> python -m pip freeze\nnumpy==1.19.5\n\n[prompt]>\n[prompt]> :: Pass -v to see what is actually going on. I`ll truncate some output\n[prompt]>\n[prompt]> python -m pip install -v pyxdameraulevenshtein==1.5.3\nUsing pip 22.3.1 from E:\\Work\\Dev\\VEnvs\\py_pc064_03.07_test1_q066060487\\lib\\site-packages\\pip (python 3.7)\nLooking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\nCollecting pyxdameraulevenshtein==1.5.3\n  Downloading pyxDamerauLevenshtein-1.5.3.tar.gz (58 kB)\n     ---------------------------------------- 58.5/58.5 kB 1.0 MB/s eta 0:00:00\n  Running command pip subprocess to install build dependencies\n  Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com, https://pypi.ngc.nvidia.com\n  Collecting setuptools>=40.8.0\n    Downloading setuptools-66.0.0-py3-none-any.whl (1.3 MB)\n       ---------------------------------------- 1.3/1.3 MB 5.0 MB/s eta 0:00:00\n  Collecting wheel>=0.33.1\n    Downloading wheel-0.38.4-py3-none-any.whl (36 kB)\n  Collecting numpy>=1.16.1\n    Downloading numpy-1.21.6-cp37-cp37m-win_amd64.whl (14.0 MB)\n       ---------------------------------------- 14.0/14.0 MB 9.2 MB/s eta 0:00:00\n  Installing collected packages: wheel, setuptools, numpy\n\n  # @TODO - cfati: !!! Check NumPy version used at build time !!!\n\n  Successfully installed numpy-1.21.6 setuptools-66.0.0 wheel-0.38.4\n  Installing build dependencies ... done\n  Running command Getting requirements to build wheel\n  running egg_info\n\n  # @TODO - cfati: Truncated output\n\n   Preparing metadata (pyproject.toml) ... done\nRequirement 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)\nBuilding wheels for collected packages: pyxdameraulevenshtein\n  Running command Building wheel for pyxdameraulevenshtein (pyproject.toml)\n  running bdist_wheel\n  running build\n  running build_ext\n  building \'pyxdameraulevenshtein\' extension\n  creating build\n  creating build\\temp.win-amd64-cpython-37\n  creating build\\temp.win-amd64-cpython-37\\Release\n  creating build\\temp.win-amd64-cpython-37\\Release\\pyxdameraulevenshtein\n  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" \n"-IC:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" /Tcpyxdameraulevenshtein/pyxdameraulevenshtein.c /Fobuild\\temp.win-amd64-cpython-37\\Release\\pyxdameraulevenshtein/pyxdameraulevenshtein.obj\n  pyxdameraulevenshtein.c\n  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\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2240): warning C4244: \'=\': conversion from \'Py_ssize_t\' to \'unsigned long\', possible loss of data\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2271): warning C4244: \'=\': conversion from \'Py_ssize_t\' to \'unsigned long\', possible loss of data\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2358): warning C4244: \'=\': conversion from \'Py_ssize_t\' to \'unsigned long\', possible loss of data\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2434): warning C4244: \'=\': conversion from \'Py_ssize_t\' to \'unsigned long\', possible loss of data\n  pyxdameraulevenshtein/pyxdameraulevenshtein.c(2957): warning C4244: \'=\': conversion from \'double\' to \'float\', possible loss of data\n  creating C:\\Users\\cfati\\AppData\\Local\\Temp\\pip-install-t79ijgrr\\pyxdameraulevenshtein_4dee1beb9a9542bb89a45fc96b191728\\build\\lib.win-amd64-cpython-37\n  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\n-win_amd64.pyd /IMPLIB:build\\temp.win-amd64-cpython-37\\Release\\pyxdameraulevenshtein\\pyxdameraulevenshtein.cp37-win_amd64.lib\n     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\n  Generating code\n  Finished generating code\n  installing to build\\bdist.win-amd64\\wheel\n \n  # @TODO - cfati: Truncated output\n\n  running install_scripts\n  creating build\\bdist.win-amd64\\wheel\\pyxDamerauLevenshtein-1.5.3.dist-info\\WHEEL\n  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\n  adding \'pyxdameraulevenshtein.cp37-win_amd64.pyd\'\n  adding \'pyxDamerauLevenshtein-1.5.3.dist-info/METADATA\'\n  adding \'pyxDamerauLevenshtein-1.5.3.dist-info/WHEEL\'\n  adding \'pyxDamerauLevenshtein-1.5.3.dist-info/top_level.txt\'\n  adding \'pyxDamerauLevenshtein-1.5.3.dist-info/RECORD\'\n  removing build\\bdist.win-amd64\\wheel\n  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\n    if get_flag("Py_DEBUG", hasattr(sys, "gettotalrefcount"), warn=(impl == "cp")):\n  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\n    warn=(impl == "cp" and sys.version_info < (3, 8)),\n  Building wheel for pyxdameraulevenshtein (pyproject.toml) ... done\n  Created wheel for pyxdameraulevenshtein: filename=pyxDamerauLevenshtein-1.5.3-cp37-cp37m-win_amd64.whl size=24372 sha256=ced6c506896c3b1d98f8ddd165b4bf8a399287fd9f5543f2398953b479173e86\n  Stored in directory: C:\\Users\\cfati\\AppData\\Local\\Temp\\pip-ephem-wheel-cache-6epkbo0t\\wheels\\b4\\f5\\9e\\39cf91e589064ceb8a4db3b6d9b2c7f267af79f9542f2ddbb3\nSuccessfully built pyxdameraulevenshtein\nInstalling collected packages: pyxdameraulevenshtein\nSuccessfully installed pyxdameraulevenshtein-1.5.3\n\n[prompt]>\n[prompt]> :: Existing NumPy version (used at runtime)\n[prompt]> python -m pip freeze\nnumpy==1.19.5\npyxDamerauLevenshtein==1.5.3\n\n[prompt]>\n[prompt]> python -c "from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance;print(\\"Done.\\")"\nTraceback (most recent call last):\n  File "<string>", line 1, in <module>\n  File "__init__.pxd", line 242, in init pyxdameraulevenshtein\nValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject\n\n[prompt]>\n[prompt]> python -m pip install numpy==1.20.0\nLooking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\nCollecting numpy==1.20.0\n  Downloading numpy-1.20.0-cp37-cp37m-win_amd64.whl (13.6 MB)\n     ---------------------------------------- 13.6/13.6 MB 7.0 MB/s eta 0:00:00\nInstalling collected packages: numpy\n  Attempting uninstall: numpy\n    Found existing installation: numpy 1.19.5\n    Uninstalling numpy-1.19.5:\n      Successfully uninstalled numpy-1.19.5\nSuccessfully installed numpy-1.20.0\n\n[prompt]>\n[prompt]> python -m pip freeze\nnumpy==1.20.0\npyxDamerauLevenshtein==1.5.3\n\n[prompt]>\n[prompt]> python -c "from pyxdameraulevenshtein import normalized_damerau_levenshtein_distance;print(\\"Done.\\")"\nDone.\n
Run Code Online (Sandbox Code Playgroud)\n

[Python。3.7 .Docs]: void PyErr_WriteUnraisable(PyObject *obj)状态(适用于v3.7但不适用于v3.6):

\n
\n

调用此函数时必须设置异常。

\n
\n

从那里开始,在[GitHub]: python/cpython - ( v3.7.0 ) cpython/Python/errors.c#206PyErr_GivenExceptionMatches似乎比v3.6.15更严格,这就是为什么在传递时不会引发异常无效的

\n

但我错了,事情更简单:

\n
\n
(py_pc064_03.06_test1_q066060487) [cfati@CFATI-5510-0:e:\\Work\\Dev\\StackOverflow\\q066060487]> :: Python 3.6 console\n(py_pc064_03.06_test1_q066060487) [cfati@CFATI-5510-0:e:\\Work\\Dev\\StackOverflow\\q066060487]> sopr.bat\n### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###\n\n[prompt]>\n[prompt]> python -c "import sys;print(\\"\\n\\".join((sys.executable, sys.version)))"\ne:\\Work\\Dev\\VEnvs\\py_pc064_03.06_test1_q066060487\\Scripts\\python.exe\n3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]\n\n[prompt]>\n[prompt]> python -m pip freeze\n\n[prompt]>\n[prompt]> python -m pip install numpy==1.19.5\nLooking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\nCollecting numpy==1.19.5\n  Downloading numpy-1.19.5-cp36-cp36m-win_amd64.whl (13.2 MB)\n     |\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6| 13.2 MB 1.6 MB/s\nInstalling collected packages: numpy\nSuccessfully installed numpy-1.19.5\n\n[prompt]>\n[prompt]> python -m pip freeze\nnumpy==1.19.5\n\n[prompt]>\n[prompt]> :: Pass -v (again) to see what is actually going on. I`ll truncate some output\n[prompt]>\n[prompt]> python -m pip install -v pyxdameraulevenshtein==1.5.3\nUsing pip 21.3.1 from e:\\Work\\Dev\\VEnvs\\py_pc064_03.06_test1_q066060487\\lib\\site-packages\\pip (python 3.6)\nLooking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\nCollecting pyxdameraulevenshtein==1.5.3\n  Downloading pyxDamerauLevenshtein-1.5.3.tar.gz (58 kB)\n     |\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6\xc2\xa6| 58 kB 1.6 MB/s\n  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\'\n  Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com, https://pypi.ngc.nvidia.com\n  Collecting setuptools>=40.8.0\n    Downloading setuptools-59.6.0-py3-none-any.whl (952 kB)\n  Collecting wheel>=0.33.1\n    Downloading wheel-0.37.1-py2.py3-none-any.whl (35 kB)\n  Collecting numpy>=1.16.1\n    Downloading numpy-1.19.5-cp36-cp36m-win_amd64.whl (13.2 MB)\n  Installing collected packages: wheel, setuptools, numpy\n  Successfully installed numpy-1.19.5 setuptools-59.6.0 wheel-0.37.1\n  Installing build dependencies ... done\n  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\\Ap


elu*_*kem 6

对于任何使用Poetry 的人来说,必须设置experimental.new-installer为才能正确构建true具有依赖项的应用程序,即:numpy<1.20

poetry config experimental.new-installer true
Run Code Online (Sandbox Code Playgroud)

它是true默认的,但如果(就像我的情况)它已被更改,它可能会让你出局。

我的应用程序使用 Tensorflow,因此我无法选择升级到>1.20. Poetry 也不支持--no-binary依赖关系。


Shu*_*ham 6

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


Meg*_*ter 6

我在树莓派 3 中遇到了同样的问题。实际上错误在于pandas. 虽然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'>
Run Code Online (Sandbox Code Playgroud)

这里也有同样的问题 - https://github.com/bitsy-ai/tensorflow-arm-bin/issues/5

张量流源:https ://github.com/bitsy-ai/tensorflow-arm-bin


Con*_*ngo 5

这对我有用(当此页面上没有其他内容时):

# 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.
Run Code Online (Sandbox Code Playgroud)

这解决了一个特别残酷的问题,截至 2022 年 4 月 11 日,该页面上的所有其他答案都无法解决该问题:

其他答案尝试在问题发生后解决问题,这在问题发生之前解决问题。

此外,尝试不同版本的Python,例如3.8、3.9、3.10。

参考: @FZeiser 的出色回答解释了为什么它有效。