Ubuntu 20.04升级版,Python缺少libffi.so.6
我最近将我的操作系统升级到Ubuntu 20.04 LTS 现在,当我尝试在Python中导入类似Numpy的库时,出现以下错误: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
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
好像我把它修好了。我可能错了,但我认为发生了以下事情:
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
的链接
据我所知,这不会覆盖任何文件,所以应该是安全的
希望这对其他人也有帮助。我也有同样的问题
pip冻结
来保存我的依赖项(因为pip不起作用),但幸运的是,我并不关心它们- 再次执行卸载过程:
再次尝试运行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