52

我的 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。

4

15 回答 15

47

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

python -m pip install cffi

对于python3.x

python3 -m pip install cffi
于 2018-05-23T11:13:09.370 回答
18

我需要卸载并重新安装它:

sudo pip uninstall cryptography

sudo pip uninstall paramiko

然后再次安装pagamiko

sudo pip install paramiko

它开始为我工作

于 2016-07-26T15:36:24.410 回答
7

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

为了pip install cffi不出错地成功,我必须从 EL5 repos安装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

如果您安装了相同或更好版本的相关软件包,我会尝试 a pip -vvv install --upgrade --force-reinstall cffi,看看是否存在 pip 掩盖的错误,然后从那里开始。

于 2016-02-26T15:57:07.803 回答
7

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

这是有效的。

sudo apt remove python3-cffi
sudo python3 -m pip install cffi
于 2020-03-22T16:36:14.197 回答
3

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

cryptography
bcrypt
paramiko

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

pip -vvv install --upgrade --force-reinstall cffi
于 2020-01-09T12:02:23.223 回答
2

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

确保您已安装 cffi 和密码学。

于 2016-02-26T15:27:20.177 回答
2

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

pip install -U cffi
于 2021-04-07T10:04:34.100 回答
1

您可以查看代码 L56/usr/lib/python2.6/site-packages/cffi/api.py

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

于 2016-03-16T05:36:17.090 回答
1

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

于 2020-04-22T20:45:14.067 回答
1

For AWS Lambda I was facing the same issue when running on Python3.7. When I downgraded it to Python3.6, this issue was resolved.

I think this packaged might have been present in Python3.6 version and later was removed. Adding this package while making layers for AWS Lambda might resolve the problem for Python3.7.

于 2021-11-09T10:15:42.297 回答
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提到的问题。

于 2020-04-09T11:02:46.347 回答
1

我在尝试让加密模块与 Python 3.8 for AWS Lambda 一起工作时遇到此错误。

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

cffi 模块内置于许多 python 发行版中,但不是在 AWS Lambda 上

于 2021-06-29T18:21:02.040 回答
0

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

于 2020-04-07T06:24:15.790 回答
0

感谢@MPlanchard,他的回答有助于确定原因

就我而言,问题与 python3.9 有关,更改为 python3.8 效果很好!

于 2021-11-23T16:35:15.800 回答
0

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

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

于 2021-08-05T18:40:15.250 回答