我最近把我的操作系统升级到了Ubuntu20.04LTS。
现在,当我尝试在Python中导入像Numpy这样的库时,我得到了以下错误:
ImportError: libffi.so.6: cannot open shared object file: No such file or directory
我尝试安装libffi
程序包,但APT找不到它:
sudo apt-get install libffi
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libffi
9条答案
按热度按时间l7mqbcuq1#
如果您使用的是pyenv,则只需卸载所用的python版本,然后重新安装即可。
示例:
在我看来,这比重命名系统库更干净、更安全。
uhry853o2#
好像我把它修好了。我可能错了,但以下是我认为发生的事情:
1.Ubuntu 20.04将libffi6升级为libffi7
1.Python仍在寻找libffi6
我做了什么来修复它:
在您的系统中找到
libffi.so.7
创建指向
libffi.so.7
的名为libffi.so.6
的simlink:更新:
正如许多用户指出的那样,此修复可能会产生意想不到的后果。更好的方法是重新安装Python,@amichaud解释道。如果您没有使用pyenv/Virtualenv/等,那么这应该被用作最后的手段,在这种情况下,删除python也会导致大量依赖项被删除。
2cmtqfgy3#
我使用的是xubuntu20.04,重新编译的python3.7版对我来说不起作用。
我解决这个问题的方法是从这里下载该包的19.10版本:http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb
然后安装它
这会将
libffi.so.6
和libffi.so.6.0.4
文件解压缩到/usr/lib/x86_64-linux-gnu/
。libffi.so.6
文件只是指向同一目录中的libffi.so.6.0.4
的链接。据我所知,这不会覆盖任何文件,因此应该是安全的。
gkl3eglg4#
取而代之的是Ubuntu 20安装了libffi7。可以使用来自Ubuntu 19.10(Eoan Ermine)download from here的命令安装以前的版本,也可以按照以下命令操作
cdmah0mi5#
我也有同样的问题
1.升级到ubuntu 20
1.pip不再起作用(同样的错误)
我所做的是:
1.删除了我使用的虚拟环境
1.重建了它
1.当然,我无法执行
pip freeze
来保存我的依赖项(因为pip不起作用),但幸运的是我不在乎它们。7xzttuei6#
Libffi6包可按如下方式下载和安装:
从列表Download Page for libffi6中确定APT的来源(例如,我选择了http://mirrors.kernel.org/ubuntu/)
做一个
back up of /etc/apt/sources.list
(以防万一)Edit /etc/apt/sources.list
并添加行(我将其添加到文件的末尾),然后保存文件更新以使用新存储库
最后,安装程序包:
请注意,libffi6和libffi7似乎是共存的。(我的Ubuntu版本是20.04)
qzlgjiam7#
当我试图运行Jupyter Notebook时,我遇到了同样的问题(当我升级到Ubuntu 20.04时)。
步骤1)-->只需重新安装python3.7.6(我使用的版本):
1.第二步:卸载jupyter。我用的是PIP3.7卸载...请参阅:How to uninstall Jupyter note book installed by pip3
1.第三步:重新安装jupyter:
试着再跑一次jupyter。应该能行得通。
wkftcu5l8#
也可以通过创建符号链接来解决libffi的问题:sudo ln-s/usr/path/to/libffi.so.8/usr/lib/path/to/libffi.so.7然后在xorg日志中得到另一个关于Wayland的错误。帮助我的是重新安装了Wayland和lib32-Wayland。之后我可以正常启动(虽然我在Cinnamon中使用了Xorg,但也安装了Gnome)
c0vxltue9#
符号链接到现有libffi的更高版本(例如,指向6到8或9)不会有什么坏处,因为从现在开始,libffi的界面几乎被冻结长达9年。
更高的SO版本,如6、7或8,它只是在新功能可用的情况下指示最低要求,如
ffi_tramp_is_present
。到2022年为止,libffi本身是完全向后兼容的。任何人都可以通过浏览https://github.com/libffi/libffi中的
inc
文件夹进行确认所以,如果你在Ubuntu 22中看到这个问题,请随时创建一个符号链接,指向你的发行版中可用的最高版本。