没有名为 _cffi_backend 的模块

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

我的 Linux rhel-5 中有 Python 2.6。我已经安装了 pip 和所需的 CFFI 软件包。当我尝试运行示例 CFFI 程序时:

ffi = FFI()

它说:

File "/usr/lib/python2.6/site-packages/cffi/api.py", line 56, in __init__
    import _cffi_backend as backend
ImportError: No module named _cffi_backend

可能的错误是什么?我在安装过程中错过了什么吗?我已经安装了 pip、wheel、pycparser、pytest 和 cffi。

python python-2.6 python-cffi
20个回答
72
投票

对于 python2.x 使用以下命令:

python -m pip install cffi

对于python3.x

python3 -m pip install cffi

20
投票

我需要卸载并重新安装:

sudo pip uninstall cryptography

sudo pip uninstall paramiko

然后再次安装pagamiko

sudo pip install paramiko

它开始对我有用


14
投票

您必须先删除以下软件包:

cryptography
bcrypt
paramiko

现在使用以下命令进行安装:

pip -vvv install --upgrade --force-reinstall cffi

13
投票

我最近遇到了同样的问题,以上解决方案都不适合我。

这是有效的。

sudo apt remove python3-cffi
sudo python3 -m pip install cffi

10
投票

我遇到了同样的问题,按照这个线程https://github.com/pyca/cryptography/issues/4403,我通过使用命令重新安装和升级解决了问题:

pip install -U cffi

9
投票

您是否从源代码编译了 Python?如果是,它在

configure/make/make install
阶段是否给您带来了任何错误?在较旧的 Red Hat 系统上,从源代码编译 Python 可能是一个真正的野兽,因此,如果您以这种方式安装,我建议梳理
configure
make
输出,以确保没有遗漏任何模块。

为了让

pip install cffi
成功且没有错误,我必须从 EL5 存储库安装
gcc
libffi-devel
。从那里,我能够毫无问题地实例化 FFI 实例:

>>> from cffi import FFI
>>> ffi = FFI()
>>>

这是

pip freeze
的输出,供参考:

[root@machine ~]# pip freeze
argparse==1.2.1
autobahn==0.8.10
cffi==1.5.2
characteristic==14.3.0
pika==0.9.13
pyasn1==0.1.7
pyasn1-modules==0.0.8
pycparser==2.14
pycrypto==2.6.1
pyOpenSSL==0.12
pysnmp==4.2.5
requests==2.7.0
service-identity==14.0.0
six==1.7.3
Twisted==14.0.0
version-utils==0.2.2
wheel==0.24.0
zope.interface==4.1.1

如果您安装了相同或更好版本的相关软件包,我会尝试

pip -vvv install --upgrade --force-reinstall cffi
,只是为了看看是否存在 pip 屏蔽的错误,然后从那里开始。


3
投票

我也有同样的问题。我把cffi卸载了然后安装就解决了:

pip uninstall cffi
pip install cffi

2
投票

有同样的问题。经过多次尝试添加 import cffi 解决了问题。

确保您已安装 cffi 和加密技术。


1
投票

您可以在

/usr/lib/python2.6/site-packages/cffi/api.py

中查看代码L56

它需要你的Python路径中的

_cffi_backend.so
。您可以为其安装 python-cffi 。但不确定它是否在您的 RPM 存储库中,尤其是您正在使用 RHEL-5。 这是 CENTOS 的 RPM
http://cbs.centos.org/koji/rpminfo?rpmID=20613
希望能帮助到你。我仍在搜索构建
_cffi_backend.so
的源代码。


1
投票

对我来说,无法在 python3.8 上安装 cffi,因为:

ImportError: cannot import name 'sysconfig' from 'distutils' (/usr/lib/python3.8/distutils/__init__.py)

不知何故,软件包

python3-distutils
在Ubuntu 16.04中不存在。

所以我最终安装了python3.7,现在我终于可以安装cffi,解决了TS提到的问题。


1
投票

您应该通过

pip install cffi 
安装 cffi 获取最新版本。我必须重新启动我的应用程序才能识别 cffi 安装。


1
投票

我在尝试让加密模块与 AWS Lambda 的 Python 3.8 一起使用时遇到此错误。

将 cffi*manylinux*.whl 文件添加到我的 Lambda 层(按照此处的建议)有效。

cffi 模块内置于许多 Python 发行版,但不适用于 AWS Lambda


1
投票

对于 AWS Lambda,我在 Python3.7 上运行时遇到了同样的问题。当我降级到Python3.6时,这个问题就解决了。

我认为这个包可能已经存在于Python3.6版本中,后来被删除了。在为 AWS Lambda 制作层时添加此包可能会解决 Python3.7 的问题。


1
投票

我在WSL2中的Ubuntu-18.04下使用python 3.9运行Ansible playbook时遇到了这个问题。它是通过以下方式排序的:

sudo apt-get remove -y python3-cffi-backend

sudo apt-get install -y python3-cffi-backend

0
投票

我在尝试使用

pip install -t .
在本地目录中安装软件包然后运行 python (2.7) 时遇到了这个问题。我的解决方案是删除
-t
并且不安装到本地目录中。


0
投票

在我的应用程序中添加“ import cffi ”后它就起作用了。

更多详情请参阅。 https://buildmedia.readthedocs.org/media/pdf/cffi/latest/cffi.pdf


0
投票

感谢@MPlanchard,他的回答帮助确定了原因

就我而言,问题与python3.9有关,更改为python3.8就可以正常工作了!


0
投票

经过多次徒劳的努力来安装正确的软件包、正确的 python 版本并构建完美的层,依靠安装 Fabric 为我解决了这个问题


0
投票

我也遇到了同样的问题,解决了

pip3.10 install cairocffi

0
投票

在华硕路由器中,解决方案是:

opkg install python3-cffi
© www.soinside.com 2019 - 2024. All rights reserved.