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

问题描述 投票:0回答:5

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

问题来了:

ffi_prep_closure(): bad user_data (看来是这个版本 运行时看到的 libffi 库与看到的“ffi.h”文件不同 在编译时)

python traceback
5个回答
16
投票

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

pip install --force-reinstall --no-binary :all: cffi

PS:在此之前可能需要安装

libffi-dev
(基于 .deb 的发行版,例如 Ubuntu 或 Debian)或
libffi-devel
(基于 .rpm 的发行版,例如 Fedora)。


10
投票

问题也可能出在 python 版本中。我使用的是 Fedora Linux,它总是比

gcloud
早一个 python 版本。所以我有
python3.10
,然后我安装了
google-cloud-sdk
python3.9
支持,并通过添加到
.bashrc
的新路径将google-cloud-sdk指向该版本的python:
export CLOUDSDK_PYTHON=python3.9


6
投票

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

pip install --upgrade cffi xcffib

在实际进行更新之前,您可能必须使用

su
(或
sudo su
),具体取决于您想要定位的软件包设置。

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

su


1
投票

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

python setup.py install

0
投票

在构建 python 本身时,我在 Solaris 机器上遇到了同样的问题。 导出

PKG_CONFIG_PATH
已经解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.