在 Ubuntu 18.04 中使用一段时间后,我在启动时收到以下错误gnome 终端:
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 调整或者执行命令添加 apt 存储库。但是,当我尝试从 nautilus 的“在终端中打开”菜单运行 gnome-terminal 时,它启动正常。如果我尝试在 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']
最后,我找到了错误的原因。库_gi.cpython-36m-x86_64-linux-gnu.sopython3.6模块吉依赖于取决于libgirepository-1.0.so从libgirepository1.0-dev包,但该依赖项未在库的 ELF 标头中列出。因此,我使用的解决方法是添加
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgirepository-1.0.so
到〜/ .profile。但是,我仍然不明白,这种情况怎么会发生,以及如何以正确的方式解决问题。我是 C 编程新手,在阅读了有关库链接的优秀论文后找到了解决方案http://www.kaizou.org/2015/01/linux-libraries/