安装 Anaconda 后引起的包问题

Anaconda 是一个科学研究工具集成包,对于研究数据科学的人来说,在系统上安装该套件是一个明智的选择——我们可不想手动安装pandas、numpy、matplotlib等一系列包。然而,在安装完成后,你可能会发现系统上有些软件无法正常运行了。在我的系统上,gnome-tweak-tool 就出现了这样的情况。本文将讲解引起该问题的原因及其解决方案。

前言

在安装 Anaconda 时,你可能会选择将其执行路径添加到 PATH 环境变量中,这样在 Shell 中输入 python 时,就会执行 Anaconda 的 python 程序,非常方便:

将 Anaconda 添加到 PATH 后

然而,在安装完成后,我发现在桌面启动 gnome-tweak-tool 没有反应,于是选择在终端中运行, 得到以下错误信息:

ModuleNotFoundError: No module named 'gi'

PS:这个问题首先在我把 Fedora 26 升级到 Fedora 27 后出现。当时对系统升级后,出现了很多奇怪的问题,尝试了一下 downgrade,结果把系统搞残了,只能选择重装。重装后,gnome-tweak-tool 可以正常工作。直到后来,安装 Anaconda 后问题再一次出现。这使得我开始意识到这个锅不该 Fedora 背。

尝试

最初遇到这个问题时,我进行了一些尝试。如果你想直接看解决方法,可以跳到一下节。

首先是“缺啥补啥”,既然缺少 gi,那就把它给装上:

pip3 install gi --user

装好 gi 后,再运行下 gnome-tweak-tool,结果抛出了另一个错误:

Traceback (most recent call last):
  File "/usr/bin/gnome-tweak-tool", line 25, in <module>
    gi.require_version("Gtk", "3.0")
AttributeError: module 'gi' has no attribute 'require_version'

没事,先把这句注释掉...再来,又炸了:

Traceback (most recent call last):
  File "/usr/bin/gnome-tweak-tool", line 24, in <module>
    import gi
  File "/home/gaunthan/.local/lib/python3.6/site-packages/gi/__init__.py", line 39
    print url
            ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(t url)?

看起来是 gi 的脚本中,print 还用着 python 2.7 的语法。给它加对圆括号就完事。再来,又炸了:

Traceback (most recent call last):
  File "/usr/bin/gnome-tweak-tool", line 27, in <module>
    import gtweak
ModuleNotFoundError: No module named 'gtweak'

提示缺少 gtweak 包。用 pip 搜不出来,那用 locate gtweak 看看系统上有没有,毕竟原先程序是可以正常运行的:

locate gtweak 运行结果部分截图

看起来是有的,恩,拷贝一份到 anaconda 的搜索路径。我选择放在 ~/.local/lib/python3.6/site-packages/ 下。继续,又炸了:

Traceback (most recent call last):
  File "/usr/bin/gnome-tweak-tool", line 84, in <module>
    from gtweak.app import GnomeTweakTool
  File "/home/gaunthan/.local/lib/python3.6/site-packages/gtweak/app.py", line 20, in <module>
    from gi.repository import Gtk
ModuleNotFoundError: No module named 'gi.repository'

诶,看起来用 pip3 装的 gi 包不是 gnome-tweak-tool 要的那个。该查查资料了。

解决

方案一:修改 gnome-tweak-tool

网上查了许多资料,发现大家都建议把 gnome-tweak-tool 的 Shebang 指定为 /usr/bin/python3 而不是原先的 /usr/bin/env python3。试了一下,问题解决了。

注意,如果还是提示 gi 有问题。请把之前用 pip 手工装的 gi 给卸载掉,这样应该就没问题了:pip3 uninstall gi

方案二:将需要的包放到 Anaconda 的搜索路径下

前面把 gtweak 放到了搜索路径下,还需要做的是把 gi 也放到这个搜索路径下。 先看看 gi 的存放路径在哪里:

$ sudo python3 -c "import gi; print(gi.__path__)"
['/usr/lib64/python3.6/site-packages/gi']

接着把它拷贝一份到搜索路径就可以了:

cp -rf /usr/lib64/python3.6/site-packages/gi ~/.local/lib/python3.6/site-package/

注意要点

请先保证 python-gobject 已经安装:

使用 rpm 命令检验 python-gobject 是否已经安装

通常情况下,系统中都是有安装的,也可能是在安装 gnome-tweak-tool 时,包管理器自动安装了。当然,你用 sudo dnf remove python-gobject python3-gobject 就会发现哪些包依赖了它了。请不要尝试卸载它,不然我保证你会哭的。:)

本质原因

通过下面两张图应该可以发现问题根源:

Anaconda python 的 sys.path 值
系统自带 python 的 sys.path 值

没错,两者的路径设置非常不同!这意味着有一些包 Anaconda 是搜索不到的,因为这些包的路径并没有添加到它的 path 设置中。这就是万恶之源...

如果想要修改它的搜索路径设置,可以阅读文末的参考文献。

参考文献

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269