我的 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。
对于 python2.x 使用以下命令:
python -m pip install cffi
对于python3.x
python3 -m pip install cffi
我需要卸载并重新安装:
sudo pip uninstall cryptography
sudo pip uninstall paramiko
然后再次安装pagamiko
sudo pip install paramiko
它开始对我有用
您必须先删除以下软件包:
cryptography
bcrypt
paramiko
现在使用以下命令进行安装:
pip -vvv install --upgrade --force-reinstall cffi
我最近遇到了同样的问题,以上解决方案都不适合我。
这是有效的。
sudo apt remove python3-cffi
sudo python3 -m pip install cffi
我遇到了同样的问题,按照这个线程https://github.com/pyca/cryptography/issues/4403,我通过使用命令重新安装和升级解决了问题:
pip install -U cffi
您是否从源代码编译了 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 屏蔽的错误,然后从那里开始。
我也有同样的问题。我把cffi卸载了然后安装就解决了:
pip uninstall cffi
pip install cffi
有同样的问题。经过多次尝试添加 import cffi 解决了问题。
确保您已安装 cffi 和加密技术。
您可以在
/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
的源代码。
对我来说,无法在 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提到的问题。
您应该通过
pip install cffi
安装 cffi
获取最新版本。我必须重新启动我的应用程序才能识别 cffi 安装。
我在尝试让加密模块与 AWS Lambda 的 Python 3.8 一起使用时遇到此错误。
将 cffi*manylinux*.whl 文件添加到我的 Lambda 层(按照此处的建议)有效。
cffi 模块内置于许多 Python 发行版,但不适用于 AWS Lambda
对于 AWS Lambda,我在 Python3.7 上运行时遇到了同样的问题。当我降级到Python3.6时,这个问题就解决了。
我认为这个包可能已经存在于Python3.6版本中,后来被删除了。在为 AWS Lambda 制作层时添加此包可能会解决 Python3.7 的问题。
我在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
我在尝试使用
pip install -t .
在本地目录中安装软件包然后运行 python (2.7) 时遇到了这个问题。我的解决方案是删除 -t
并且不安装到本地目录中。
在我的应用程序中添加“ import cffi ”后它就起作用了。
更多详情请参阅。 https://buildmedia.readthedocs.org/media/pdf/cffi/latest/cffi.pdf
感谢@MPlanchard,他的回答帮助确定了原因
就我而言,问题与python3.9有关,更改为python3.8就可以正常工作了!
经过多次徒劳的努力来安装正确的软件包、正确的 python 版本并构建完美的层,依靠安装 Fabric 为我解决了这个问题
我也遇到了同样的问题,解决了
pip3.10 install cairocffi
在华硕路由器中,解决方案是:
opkg install python3-cffi