88

我最近将我的操作系统升级到了 Ubuntu 20.04 LTS。

现在,当我尝试在 Python 中导入像 Numpy 这样的库时,出现以下错误:

ImportError: libffi.so.6: cannot open shared object file: No such file or directory

我尝试安装该libffi软件包,但无法找到它:

sudo apt-get install libffi
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libffi
4

8 回答 8

76

如果您使用的是 pyenv,您应该卸载使用的 python 版本,然后重新安装它。

例子:

pyenv uninstall 3.7.4
pyenv install 3.7.4

从我的角度来看,它比重命名系统库更干净、更安全。

于 2020-05-27T08:56:58.423 回答
68

好像我修好了。我可能是错的,但这是我认为发生的事情:

  1. Ubuntu 20.04 将 libffi6 升级为 libffi7
  2. Python 仍在寻找 libffi6

我做了什么来解决它:

libffi.so.7在您的系统中找到

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

创建一个名为 simlinklibffi.so.6的指向libffi.so.7

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

更新:

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

于 2020-05-18T18:14:31.033 回答
54

我正在使用 Xubuntu 20.04 并且重新编译 python 版本 3.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同一目录中的链接。

据我所知,这不会覆盖任何文件,所以应该是安全的。

希望这对某人也有帮助。

于 2020-08-09T18:21:09.513 回答
10

Ubuntu 20 安装了 libffi7。可以使用从此处下载的Ubuntu 19.10 (Eoan Ermine) 安装以前的版本, 或者您可以按照这些命令

$ 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
于 2021-07-16T05:21:45.460 回答
2

对我来说同样的问题

  1. 升级到 ubuntu 20
  2. pip 不再起作用(同样的错误)

我所做的是:

  1. 删除了我正在使用的虚拟环境
  2. 重新创建它
  3. 当然,我无法pip freeze保存我的依赖项(因为 pip 不起作用),但幸运的是我并不关心它们。
于 2020-10-07T12:58:00.240 回答
1

libffi6 包可以按如下方式下载和安装:

从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]
于 2021-08-28T02:09:44.700 回答
0

当我尝试运行 Jupyter Notebook 时,我遇到了同样的问题(当我升级到 Ubuntu 20.04 时)。

第 1 步)--> 重新安装 python3.7.6(我使用的版本):

$ cd path_to_python3.7_folder
  • 再次执行de安装过程:
    $ ./configure --enable-optimizations
    $ make
    $ sudo make install

  1. 第二步:卸载jupyter。我用pip3.7卸载... 见:如何卸载pip3安装的Jupyter笔记本

  2. 第 3 步:再次重新安装 jupyter:

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

尝试再次运行 jupyter。它应该工作。

于 2020-11-15T16:16:10.287 回答
0

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)

于 2021-10-20T19:01:31.310 回答