运行时看到的 libffi 库的版本似乎与编译时看到的“ffi.h”文件不同

Vet*_*hya 17 python traceback

这个回溯搞乱了我所有的程序,我仍然无法修复它,我已经尝试了所有方法,但没有帮助!

问题是这样的:

ffi_prep_closure(): bad user_data (似乎运行时看到的 libffi 库的版本与编译时看到的 'ffi.h' 文件不同)

Mic*_*hař 16

这种情况发生在一些最近的 Linux 发行版上 - PyPI 上发布的二进制轮与系统 libffi 不兼容。以下将重新安装该包并在系统上本地构建它,而不使用 PyPI 上发布的预编译二进制文件:

pip install --force-reinstall --no-binary :all: cffi
Run Code Online (Sandbox Code Playgroud)

PS:在此之前可能需要安装libffi-dev(基于 .deb 的发行版,例如 Ubuntu 或 Debian)或libffi-devel(基于 .rpm 的发行版,例如 Fedora)。

  • 需要注意的是,这对我在使用 GCloud SDK 370.0.0 的 Ubuntu 20.04 上有效。 (2认同)

Бог*_*ець 10

问题也可能出在python 版本中。我使用的是Fedora Linux,而且它总是比之前的一个Python版本领先gcloud。所以我python3.10安装了google-cloud-sdk python3.9google-cloud-sdk 并通过添加新路径将其指向该版本的 python .bashrcexport CLOUDSDK_PYTHON=python3.9

  • 为我解决了 Fedora 35 上的 gcloud 问题。`sudo dnf install python3.9`, `CLOUDSDK_PYTHON=python3.9 gcloud ...` (3认同)

adr*_*rhc 6

我刚刚进行了升级,现在错误消失了:

pip install --upgrade cffi xcffib
Run Code Online (Sandbox Code Playgroud)

在实际进行更新之前,您可能必须使用su(或),具体取决于您想要定位的软件包设置。sudo su

PS:我使用的是 Ubuntu,所以我su在实际升级之前使用过


小智 1

这是cffi python 包问题。尝试从https://pypi.org/project/cffi/#files下载源包 tar.gz并使用以下命令手动安装:

python setup.py install
Run Code Online (Sandbox Code Playgroud)