After updating from Ubuntu 20.04 to Ubuntu 20.10 I am not able to run PyGObject applications on a Python Virtual Environment.
I can reproduce the issue following these simple steps:
sudo apt-get install python3-venv
python3 -m venv venv
source env/bin/activate
pip install PyGObject==3.38.0
python3 hw.py
Where hw.py
is the standard PyGObject Hello World:
#!/usr/bin/env python3
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
window = Gtk.Window(title="Hello World")
window.show()
window.connect("destroy", Gtk.main_quit)
Gtk.main()
When I try to run it, it throws this error:
$ python3 hw.py
Traceback (most recent call last):
File "hw.py", line 3, in <module>
import gi
File "/home/leinardi/temp/hw/venv/lib/python3.8/site-packages/gi/__init__.py", line 40, in <module>
from . import _gi
ImportError: libffi.so.7: cannot open shared object file: No such file or directory
Running hw.py
on the System Environment works correctly (the issue only happens when using the Virtual Environment).
A workaround is to find and provide a copy of libffi.so.7
in /usr/lib/x86_64-linux-gnu/
but, since this library version is not available inside the official repositories of Ubuntu 20.10, this is a difficult and unsafe operation.