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

Kh4*_*zit 64 python ubuntu ubuntu-20.04

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

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

ImportError: libffi.so.6: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install libffi
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libffi
Run Code Online (Sandbox Code Playgroud)

ami*_*aud 59

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

例子:

pyenv uninstall 3.7.4
pyenv install 3.7.4
Run Code Online (Sandbox Code Playgroud)

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

  • 甚至`pyenv install 3.7.4 -f`也允许不重新创建virtualenvs (6认同)
  • 这是正确的方法 - 伪造 lib 版本是最后的选择,可能会产生意想不到的后果。 (3认同)
  • 这确实应该是最重要/接受的答案!符号链接不同的库似乎是灾难的根源 (2认同)

Kh4*_*zit 57

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

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

我做了什么来修复它:

libffi.so.7在您的系统中定位

$ find /usr/lib -name "libffi.so*"
Run Code Online (Sandbox Code Playgroud)

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

sudo ln -s /usr/path/to/libffi.so.7 /usr/lib/path/to/libffi.so.6
Run Code Online (Sandbox Code Playgroud)

更新:

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

  • 如果这确实有效,我会感到非常惊讶 - 将一个版本的库符号链接到另一个版本似乎可能会导致不稳定。重建 python 似乎是正确的解决方案 (4认同)
  • 当你说有效时,你的意思似乎是启动时不会崩溃。您无法知道 python 的行为是否与应有的略有不同,因为您调用了错误的库,执行中可能会发生细微的差异,而这是无法检测到的。更容易但烦人的是未来某个随机点的崩溃,因为最后一些 python 代码导致对 lib 的调用,该库已经发生了足够的变化,以至于它在明显的问题上失败了。 (2认同)

ant*_*isa 41

我使用的是 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
Run Code Online (Sandbox Code Playgroud)

这会将libffi.so.6libffi.so.6.0.4文件解压到/usr/lib/x86_64-linux-gnu/. 该libffi.so.6文件只是指向libffi.so.6.0.4同一目录中的链接。

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

希望这也有助于某人。

  • 这个对我来说就像一种魅力 (2认同)

小智 28

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
Run Code Online (Sandbox Code Playgroud)


vla*_*ean 5

对我来说同样的问题

  1. 升级到Ubuntu 20
  2. pip 不再工作(同样的错误)

我所做的是:

  1. 删除我正在使用的虚拟环境
  2. 重新创建它

当然,我无法保存pip freeze我的依赖项(因为 pip 不起作用),但幸运的是我不关心它们。