Ubuntu 20.04升级,Python缺少libffi.so.6

bzzcjhmw  于 2022-10-27  发布在  Python
关注(0)|答案(9)|浏览(729)

我最近把我的操作系统升级到了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
l7mqbcuq

l7mqbcuq1#

如果您使用的是pyenv,则只需卸载所用的python版本,然后重新安装即可。
示例:

pyenv uninstall 3.7.4
pyenv install 3.7.4

在我看来,这比重命名系统库更干净、更安全。

uhry853o

uhry853o2#

好像我把它修好了。我可能错了,但以下是我认为发生的事情:
1.Ubuntu 20.04将libffi6升级为libffi7
1.Python仍在寻找libffi6
我做了什么来修复它:
在您的系统中找到libffi.so.7

$ find /usr/lib -name "libffi.so*"

创建指向libffi.so.7的名为libffi.so.6的simlink:

sudo ln -s /usr/path/to/libffi.so.7 /usr/lib/path/to/libffi.so.6

更新:

正如许多用户指出的那样,此修复可能会产生意想不到的后果。更好的方法是重新安装Python,@amichaud解释道。如果您没有使用pyenv/Virtualenv/等,那么这应该被用作最后的手段,在这种情况下,删除python也会导致大量依赖项被删除。

2cmtqfgy

2cmtqfgy3#

我使用的是xubuntu20.04,重新编译的python3.7版对我来说不起作用。
我解决这个问题的方法是从这里下载该包的19.10版本:http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb
然后安装它

sudo apt install ./libffi6_3.2.1-8_amd64.deb

这会将libffi.so.6libffi.so.6.0.4文件解压缩到/usr/lib/x86_64-linux-gnu/libffi.so.6文件只是指向同一目录中的libffi.so.6.0.4的链接。
据我所知,这不会覆盖任何文件,因此应该是安全的。

gkl3eglg

gkl3eglg4#

取而代之的是Ubuntu 20安装了libffi7。可以使用来自Ubuntu 19.10(Eoan Ermine)download from here的命令安装以前的版本,也可以按照以下命令操作

$ curl -LO http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb

$ sudo dpkg -i libffi6_3.2.1-8_amd64.deb
cdmah0mi

cdmah0mi5#

我也有同样的问题
1.升级到ubuntu 20
1.pip不再起作用(同样的错误)
我所做的是:
1.删除了我使用的虚拟环境
1.重建了它
1.当然,我无法执行pip freeze来保存我的依赖项(因为pip不起作用),但幸运的是我不在乎它们。

7xzttuei

7xzttuei6#

Libffi6包可按如下方式下载和安装:
从列表Download Page for libffi6中确定APT的来源(例如,我选择了http://mirrors.kernel.org/ubuntu/)
做一个back up of /etc/apt/sources.list(以防万一)
Edit /etc/apt/sources.list并添加行(我将其添加到文件的末尾),然后保存文件

deb https://mirrors.kernel.org/ubuntu bionic main

更新以使用新存储库

sudo apt update

最后,安装程序包:

sudo apt install libffi6

请注意,libffi6和libffi7似乎是共存的。(我的Ubuntu版本是20.04)

$ sudo apt list | grep libffi[67]/

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libffi6/bionic,now 3.2.1-8 amd64 [installed]
libffi7/focal,now 3.3-4 amd64 [installed,automatic]
qzlgjiam

qzlgjiam7#

当我试图运行Jupyter Notebook时,我遇到了同样的问题(当我升级到Ubuntu 20.04时)。
步骤1)-->只需重新安装python3.7.6(我使用的版本):

$ cd path_to_python3.7_folder
  • 重新执行卸载过程:
$ ./configure --enable-optimizations
    $ make
    $ sudo make install

1.第二步:卸载jupyter。我用的是PIP3.7卸载...请参阅:How to uninstall Jupyter note book installed by pip3
1.第三步:重新安装jupyter:

$ pip3.7 install jupyterlab
    $ pip3.7 install notebook

试着再跑一次jupyter。应该能行得通。

wkftcu5l

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)

c0vxltue

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中看到这个问题,请随时创建一个符号链接,指向你的发行版中可用的最高版本。

相关问题