Arch Linux下hp-setup报错:cannot import name '_gobject'求助
我之前在Arch上碰到过一模一样的问题!当时折腾了好一会儿才搞明白根源,给你分享下解决办法:
问题根源
这个错误是因为python-gobject包的更新修改了内部模块结构,hplip的GUI组件(也就是你用--gui或默认GUI模式时运行的部分)还在尝试导入一个已经被移除的内部模块_gobject,而文本模式(--interactive)不依赖GTK的Python绑定,所以不受影响。重装hplip没用是因为官方包还没适配最新的python-gobject版本。
解决方案1:修改hplip的Python代码(快速修复)
先定位到hplip中引用
_gobject的文件,用grep搜索:sudo grep -r "from.*_gobject" /usr/share/hplip/通常会在
/usr/share/hplip/ui5/gtkbase.py和/usr/share/hplip/prnt/utils/gui_utils.py这两个文件里找到相关导入语句。编辑这些文件(比如先改gtkbase.py):
sudo nano /usr/share/hplip/ui5/gtkbase.py找到类似下面的行:
from gi.repository._gobject import *把它替换成:
from gi.repository import GObject _gobject = GObject这样就把
_gobject映射到了当前存在的GObject模块,兼容原来的代码。保存修改后,再运行
hp-setup --gui试试,应该就能正常启动GUI了。
解决方案2:安装AUR的hplip-git版本(长期修复)
如果不想手动修改系统文件,可以安装AUR里的开发版hplip,这个版本已经修复了和最新python-gobject的兼容问题:
# 假设你用yay作为AUR助手,其他助手比如paru同理 yay -S hplip-git
安装完成后,直接运行hp-setup即可。
另外你提到还有一台配置相同的电脑没这个问题,大概率是那台机器的python-gobject版本还停留在旧版,或者hplip的版本不同,你可以用pacman -Q python-gobject hplip对比两台机器的包版本确认一下。
内容的提问来源于stack exchange,提问作者MountainX

