Ubuntu 20.04 upgrade, Python missing libffi.so.6
PythonUbuntuUbuntu 20.04Python Problem Overview
I recently upgraded my OS to Ubuntu 20.04 LTS.
Now when I try to import a library like Numpy in Python, I get the following error:
ImportError: libffi.so.6: cannot open shared object file: No such file or directory
I tried installing the libffi
package, but apt can't locate it :
sudo apt-get install libffi
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libffi
Python Solutions
Solution 1 - Python
If you are using pyenv, you should just uninstall the used python version and then reinstall it.
Example:
pyenv uninstall 3.7.4
pyenv install 3.7.4
It's cleaner and safer than renaming system library from my point of view.
Solution 2 - Python
It seems like I fixed it. I could be wrong, but here is what I think happened:
- Ubuntu 20.04 upgraded libffi6 to libffi7
- Python is still looking for libffi6
What I did to fix it :
Locate libffi.so.7
in your system
$ find /usr/lib -name "libffi.so*"
Create a simlink named libffi.so.6
that points to libffi.so.7
:
sudo ln -s /usr/path/to/libffi.so.7 /usr/lib/path/to/libffi.so.6
UPDATE:
As noted by many users, this fix could have unintended consequences. The better way to do it is to reinstall python as @amichaud explained. This should be used as a last resort IF you're not using pyenv/virtualenv/etc in which case removing python will cause a lot of dependencies to be removed as well.
Solution 3 - Python
I am using Xubuntu 20.04 and recompiling the python version 3.7 did not work for me.
The way I solved this was to download the 19.10 version of the package from here: http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb
and then installing it
sudo apt install ./libffi6_3.2.1-8_amd64.deb
This will unpack the libffi.so.6
and libffi.so.6.0.4
files to /usr/lib/x86_64-linux-gnu/
. The libffi.so.6
file is just a link to libffi.so.6.0.4
in the same directory.
As far as I could see this does not overwrite any files so should be safe.
Solution 4 - Python
Ubuntu 20 has libffi7 installed instead. It's possible to install the previous version using coming from Ubuntu 19.10 (Eoan Ermine) download from here Or you can follow these commands
$ 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
Solution 5 - Python
Same problem for me
- Upgraded to ubuntu 20
- pip didn't work anymore (same error)
What I did was:
- deleted the virtual env I was using
- recreated it
- Sure, I wasn't able to do a
pip freeze
to get save my dependencies (as pip didn't work), but fortunately I didn't care about them.
Solution 6 - Python
The libffi6 package may be downloaded and installed as follows:
Identify a source for apt from the list Download Page for libffi6 (I picked http://mirrors.kernel.org/ubuntu/ for instance)
Make a back up of /etc/apt/sources.list
(just in case)
Edit /etc/apt/sources.list
and add the line (I added it to the very end of the file) ands save the file
deb https://mirrors.kernel.org/ubuntu bionic main
Update to use the new repository
sudo apt update
Finally, install the package:
sudo apt install libffi6
Note that both libffi6 and libffi7 appear to coexist. (My Ubuntu version is 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]
Solution 7 - Python
I had the same problem (when I upgrded to Ubuntu 20.04) when I tried to run Jupyter Notebook.
Step 1) --> Just re-install python3.7.6 (the version I was using) :
$ cd path_to_python3.7_folder
- Do again de installation process:
$ ./configure --enable-optimizations
$ make
$ sudo make install
-
Step 2: uninstall jupyter. I used pip3.7 uninstall ... See: https://stackoverflow.com/questions/45986142/how-to-uninstall-jupyter-note-book-installed-by-pip3?noredirect=1&lq=1
-
Step 3: Re-install jupyter again:
$ pip3.7 install jupyterlab
$ pip3.7 install notebook
Try to run jupyter again. It should work.
Solution 8 - Python
The problem with libffi can also be tackled with making a symlink: sudo ln -s /usr/path/to/libffi.so.8 /usr/lib/path/to/libffi.so.7 Then you get another error in xorg log concerning wayland. What helped me was to reinstall wayland and lib32-wayland. After that I could boot normally (although I use xorg in Cinnamon, but also have Gnome installed)