我最近将操作系统升级到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
答案 0 :(得分:35)
如果您使用的是pyenv,则应仅卸载使用的python版本,然后重新安装。
示例:
pyenv uninstall 3.7.4
pyenv install 3.7.4
从我的角度来看,这比重命名系统库更安全,更安全。
答案 1 :(得分:33)
似乎我已修复它。我可能是错的,但这是我想发生的事情:
我做了什么修复:
在系统中找到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
更新:
许多用户都指出,此修复程序可能会带来意想不到的后果。更好的方法是按照@amichaud的说明重新安装python。如果您不使用pyenv / virtualenv / etc,则应将此作为最后的手段,在这种情况下,删除python也会导致很多依赖项也被删除。
答案 2 :(得分:21)
我正在使用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.6
和libffi.so.6.0.4
文件解压缩到/usr/lib/x86_64-linux-gnu/
中。 libffi.so.6
文件只是同一目录中libffi.so.6.0.4
的链接。
据我所知,这不会覆盖任何文件,因此应该是安全的。
希望这也会对某人有所帮助。
答案 3 :(得分:0)
对我来说同样的问题
我所做的是:
pip freeze
来保存我的依赖项(因为pip无法正常工作),但是幸运的是,我并不关心它们。答案 4 :(得分:0)
当我尝试运行Jupyter Notebook时,我遇到了同样的问题(当我升级到Ubuntu 20.04时)。
步骤1)->只需重新安装python3.7.6(我使用的版本):
$ cd path_to_python3.7_folder
$ ./configure --enable-optimizations
$ make
$ sudo make install
步骤2:卸载jupyter。我用pip3.7卸载... 参见:How to uninstall Jupyter note book installed by pip3
第3步:再次重新安装jupyter:
$ pip3.7 install jupyterlab
$ pip3.7 install notebook
尝试再次运行jupyter。应该可以。
答案 5 :(得分:0)
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
答案 6 :(得分:-1)
可能是您想要的libffi6
软件包,它安装了libffi.so.6
。
sudo apt-get install libffi6