没有名为 _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 可能是一个真正的野兽,所以如果你以这种方式安装,我建议梳理 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 掩盖的错误,然后从那里开始。
【讨论】:
【参考方案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