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

Ubuntu 20.04升级版,Python缺少libffi.so.6,python,ubuntu,ubuntu-20.04,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 我尝试安装libffi软件包,但apt找不到它: sudo apt-get install libffi Reading package lists... Done Building depende

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

现在,当我尝试在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

可能是您想要的
libffi6
软件包安装了
libffi.so.6

sudo apt-get install libffi6

好像我把它修好了。我可能错了,但我认为发生了以下事情:

  • Ubuntu 20.04将libffi6升级为libffi7
  • Python仍在寻找libffi6
  • 我做了什么来修复它:

    在系统中找到
    libffi.so.7

    $ find /usr/lib -name "libffi.so*"
    
    创建一个名为
    libffi.so.6
    的simlink,指向
    libffi.so.7

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


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

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

    例如:

    pyenv uninstall 3.7.4
    pyenv install 3.7.4
    

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

    我使用的是Xubuntu 20.04,重新编译python 3.7版对我来说不起作用

    我解决这个问题的方法是从这里下载19.10版本的软件包:

    然后安装它

    sudo apt install ./libffi6_3.2.1-8_amd64.deb
    
    这将把
    libffi.so.6
    libffi.so.6.0.4
    文件解压缩到
    /usr/lib/x86\u 64-linux-gnu/
    libffi.so.6
    文件只是指向同一目录中
    libffi.so.6.0.4
    的链接

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

    希望这对其他人也有帮助。

    我也有同样的问题

  • 升级到ubuntu 20
  • pip不再工作(相同错误)
  • 我所做的是:

  • 删除了我正在使用的虚拟环境
  • 重新创建它
  • 当然,我无法执行
    pip冻结
    来保存我的依赖项(因为pip不起作用),但幸运的是,我并不关心它们
  • 当我尝试运行Jupyter笔记本时,我也遇到了同样的问题(当我升级到Ubuntu 20.04时)

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

    • 再次执行卸载过程:

  • 步骤2:卸载jupyter。我使用了pip3.7卸载。。。 见:

  • 步骤3:再次重新安装jupyter:



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

    您可以尝试重新安装
    python3numpy
    如果有帮助,您可以进行搜索。例如,“搜索”在20.04中不可用,但在20.04中可用。我认为OP需要重新安装NumPy,或者以某种方式重新配置它-不确定。是的,你是对的,我发布了一个修复它的方法。我不知道这是否是最好的方法。这是正确的方法-伪造lib版本是最后的选择,可能会产生意想不到的后果。即使是
    pyenv安装3.7.4-f
    ,它允许不重新创建virtualenvs重新安装Python,无论是使用pyenv还是其他。Python在构建时会找到更新的库。这真的应该是最好的答案!将一个不同的lib进行符号链接似乎是一个灾难的秘诀,我必须实际删除并重新安装pyenvI。如果这真的起作用,我会非常惊讶——将一个lib的一个版本符号链接到另一个版本似乎可能会导致不稳定。重建python似乎是正确的解决方案,它实际上对我很有效。我知道这不是最干净的方法,但这样可以避免重新安装所有python包/依赖项。关于不稳定,我不明白为什么这是一个“灾难食谱”。在最坏的情况下,您只需要恢复到重建python。这就是说,我愿意改变被接受的答案,如果它能引起更多我不知道的问题。当你说可行,尽管你似乎是说不会在启动时崩溃。由于调用了错误的lib,您无法知道python的行为是否与应该的稍有不同,执行过程中可能会出现细微的差异,这是无法检测到的。更容易但令人恼火的是,将来某个随机点会发生崩溃,因为最终某些python代码会导致对lib的调用,而lib的调用已经发生了很大的变化,显然会失败。如果要避免“丢失”已安装的软件包,只需执行
    pip freeze>backup.txt
    ,删除python安装,重新安装它们并使用
    pip install-r backup.txt
    你就会回到原来的状态。这一个对我来说非常有用
    $ cd path_to_python3.7_folder
    
        $ ./configure --enable-optimizations
        $ make
        $ sudo make install
    
        $ pip3.7 install jupyterlab
        $ pip3.7 install notebook