没有名为 _cffi_backend 的模块

Posted

技术标签:

【中文标题】没有名为 _cffi_backend 的模块【英文标题】:No module named _cffi_backend 【发布时间】:2016-03-26 01:38:34 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

python -m pip install cffi

对于python3.x

python3 -m pip install cffi

【讨论】:

我必须先卸载 cffi (pip uninstall cffi) 然后重新安装,因为它说它已经安装了【参考方案2】:

我需要卸载并重新安装:

sudo pip uninstall cryptography

sudo pip uninstall paramiko

然后再次安装pagamiko

sudo pip install paramiko

它开始为我工作

【讨论】:

【参考方案3】:

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

为了让pip install cffi 成功且没有错误,我必须从 EL5 存储库安装 gcclibffi-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 掩盖的错误,然后从那里开始。

【讨论】:

【参考方案4】:

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

这是有效的。

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

我也遇到了同样的问题,跟着这个帖子https://github.com/pyca/cryptography/issues/4403,我通过命令重装升级解决了这个问题:

pip install -U cffi

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

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

cryptography
bcrypt
paramiko

现在使用以下命令安装:

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

【讨论】:

【参考方案9】:

因为这个原因,我无法在 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提到的问题。

【讨论】:

这发生在我的 venv 和 Python 3.6 中,我在我的 Ubuntu 20.04 中删除了它并用 Python 3.8 的 venv 替换它,一切正常,所有问题都消失了。您的回答激励我尝试一个干净、激进的解决方案。谢谢@Jurrian【参考方案10】:

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

【讨论】:

【参考方案11】:

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

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

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

【讨论】:

您能否提供有关您的图层结构的更多信息?比如你解压whl文件的地方?【参考方案12】:

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

【讨论】:

【参考方案13】:

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

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

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。【参考方案14】:

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

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

【讨论】:

【参考方案15】:

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

在我的情况下,问题与 python3.9 有关,更改为 python3.8 效果很好!

【讨论】:

以上是关于没有名为 _cffi_backend 的模块的主要内容,如果未能解决你的问题,请参考以下文章

生成的 windows exe (pyinstaller) 无法加载 _cffi_backend

c/_cffi_backend.c:15:10: fatal error: ffi.h: No such file or directory

ImportError:没有名为包的模块

ImportError:没有名为[重复]的模块

没有名为 pipreqs.__main__ 的模块; 'pipreqs' 是一个包,不能直接执行

没有名为 streamlit.__main__ 的模块; ‘streamlit’是一个包,不能直接执行