В Ubuntu 18.04 после некоторого времени использования я получил следующую ошибку при попытке запустить gnome-terminal:
Traceback (most recent call last):
File "/usr/bin/gnome-terminal", line 9, in <module>
from gi.repository import GLib, Gio
File "/home/victor/.local/lib/python3.6/site-packages/gi/__init__.py", line 42, in <module>
from . import _gi
ImportError: /home/victor/.local/lib/python3.6/site-packages/gi/_gi.cpython-36m-x86_64-linux-gnu.so: undefined symbol: g_interface_info_find_method
Аналогичная ошибка возникает и при попытке запуска gnome-terminal или выполнить команду add-apt-repository. Однако, когда я пытаюсь запустить gnome-терминал из меню «open in terminal» nautilus, он запускается нормально. Такая же ошибка возникает и при попытке сделать в python3:
from gi.repository import GLib
Буду благодарен за любой совет.
Вот дополнительный вывод, связанный с параметрами python3:
$ type python3; readlink /usr/bin/python3
python3 is /usr/bin/python3
python3.6
$ echo "$PYTHONPATH"; python3 -c 'import sys; print(sys.path)'
['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/victor/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
Наконец, я нашел причину ошибки. Библиотека add-apt-repository модуля python3.6 gi зависит от libgirepository-1.0.so от пакета libgirepository1.0-dev, но эта зависимость не указана в заголовке ELF библиотеки. Итак, обходной путь, который я использовал, - добавить
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgirepository-1.0.so
в gi . Тем не менее, я до сих пор не понимаю, как это может произойти и как правильно решить проблему. Я новичок в программировании на С и нашел решение после прочтения превосходной статьи по библиотеке, ссылки на которую http://www.kaizou.org/2015/01/linux-libraries/