Nautilus扩展加载失败 _gi导入错误提示PyExc_NotImplementedError符号未定义
Nautilus覆盖图标功能失效故障排查
故障表现
- Nautilus覆盖图标功能数天前无预兆停止工作,抛出相关报错,无法定位具体触发操作,确认故障前功能运行正常。
- 已尝试通过
apt重装关联组件,还通过pip3在用户主目录本地安装GObject库,故障依旧。 - 已排除Nextcloud集成本身的问题:其余所有Nautilus扩展运行时都会抛出完全一致的报错。花费数小时检索公开资料,未找到有效参考方案。
- 核心需求:恢复Nautilus扩展正常运行,优先修复覆盖图标功能。
报错日志
启动Nautilus时终端输出如下报错,使用系统全局版本组件时也会触发相同错误,此前在个人主目录安装对应库是为了排除文件系统损坏的干扰:
Initializing nautilus-image-converter extension ImportError: could not import gobject (error was: ImportError('/home/user/.local/lib/python3.8/site-packages/gi/_gi.cpython-38-aarch64-linux-gnu.so: undefined symbol: PyExc_NotImplementedError')) Traceback (most recent call last): File "/usr/share/nautilus-python/extensions/syncstate-Nextcloud.py", line 29, in <module> from gi.repository import GObject, Nautilus File "/home/user/.local/lib/python3.8/site-packages/gi/__init__.py", line 40, in <module> from . import _gi ImportError: /home/user/.local/lib/python3.8/site-packages/gi/_gi.cpython-38-aarch64-linux-gnu.so: undefined symbol: PyExc_NotImplementedError Traceback (most recent call last): File "/usr/share/nautilus-python/extensions/nautilus-hide.py", line 19, in <module> from gi.repository import Nautilus, GObject File "/home/user/.local/lib/python3.8/site-packages/gi/__init__.py", line 40, in <module> from . import _gi ImportError: /home/user/.local/lib/python3.8/site-packages/gi/_gi.cpython-38-aarch64-linux-gnu.so: undefined symbol: PyExc_NotImplementedError Traceback (most recent call last): File "/usr/share/nautilus-python/extensions/nautilus-gsconnect.py", line 10, in <module> import gi File "/home/user/.local/lib/python3.8/site-packages/gi/__init__.py", line 40, in <module> from . import _gi ImportError: /home/user/.local/lib/python3.8/site-packages/gi/_gi.cpython-38-aarch64-linux-gnu.so: undefined symbol: PyExc_NotImplementedError
解决方案
报错核心原因是用户目录下通过pip安装的PyGObject版本和系统自带Python、GObject底层库版本不兼容,Python加载gi模块时优先读取了用户目录下的不兼容版本,导致符号找不到的加载错误。
按顺序执行以下操作即可修复:
- 卸载用户目录下pip安装的不兼容PyGObject包:
pip3 uninstall -y PyGObject
- 如果卸载后仍报错,直接清理用户Python包目录下残留的gi相关文件:
rm -rf ~/.local/lib/python3.8/site-packages/gi*
- 执行命令重启Nautilus生效:
nautilus -q
重启后所有Nautilus扩展(包括覆盖图标功能)即可恢复正常运行。
注意:PyGObject属于和桌面环境强绑定的系统级组件,不要通过pip在用户目录或全局安装该类系统绑定库,否则极易出现版本不匹配导致的桌面组件、文件管理器扩展失效问题,这类组件直接使用系统apt源提供的版本即可。
内容的提问来源于stack exchange,提问作者Tomáš Kaluža
相关产品推荐
相关产品推荐

