Ubuntu 无法打开 terminal 之修复

jackwangcumt 发表于 2021/11/25 10:37:30 2021/11/25
【摘要】 Ubuntu 18.04中升级了Python环境,之前的Python是2.7和Python3.5,而为了兼容某些软件的运行,需要升级到Python3.7,中间也有安装Python3.6版本。当一切都准备就绪后,重启服务器,突然发现Ubuntu 18.04中的命令行 terminal 终端无法正常打开。本文将通过详细的步骤来解决这种问题。

1 问题概述


     最近在Ubuntu 18.04中升级了Python环境,之前的Python是2.7和Python3.5,而为了兼容某些软件的运行,需要升级到Python3.7,中间也有安装Python3.6版本。当一切都准备就绪后,重启服务器,突然发现Ubuntu 18.04中的命令行 terminal 终端无法正常打开,顿时感觉有点蒙圈。在网上查找了半天资料,终于解决了这个问题,下面将这次解决问题的心得做个总结,也做个备忘。

     当Ubuntu 操作系统中的 terminal 终端无法打开时,首先需要考虑一下如何进行配置和命令的执行。在Ubuntu 操作系统中还有另外一个终端工具XTerm,它是一个X Window System上的终端模拟器,用来提供多个独立的SHELL输入输出。因此,可以暂时使用终端工具XTerm来进行配置和执行命令,终端工具XTerm可以通过搜索查找,界面如下所示:

1.jpg
    首先打开XTerm终端工具 , 在XTerm中输入如下命令:

gnome-terminal

    一般的Linux系统通常包含多种终端模拟器,如XTerm、Konsole、Gnome-Terminal等。常用的Terminal就是Gnome Terminal,它支持彩色的文本,多样化的主题,透明,鼠标交互,多标签。这个终端支持多用户,所以可以任意尝试不同的设置项,而不会影响当前的配置,或者也可以为不同的任务设置不同的配置,而且支持链接的点击,这个特性用过之后就无法舍弃。

    输入上述命令,则可以启动终端,但可以查看到报错信息,我这里的报错信息如下所示:

Traceback (most recent call last):
File "/usr/bin/gnome-terminal", line 9, in
from gi.repository import GLib, Gio
File "/usr/lib/python3/dist-packages/gi/init.py", line 42, in
from . import _gi
ImportError: cannot import name '_gi'

2 问题概述


      根据上述错误提示,是报的导入错误,这是由于Python版本不一致导致的。下面给出解决方案。首先切换到如下目录中,执行命令如下所示:

su root
cd /usr/lib/python3/dist-packages/gi/
ls

      查看的目录结构如下所示:

2.jpg

     其中有两个核心文件:_gi_cairo.cpython-35m-x86_64-linux-g.so 和 _gi.cpython-35m-x86_64-linux-gnu.so 。这里可以看到是cpython-35m,即表示Python 3.5版本的,下面看一下当前Python相关命令的指向,输入如下命令查看:

cd /usr/bin
ll python*

     输出结果如下所示:

3.jpg

    由上述可以看到,Python3 指向了python3.7 ,而_gi_cairo.cpython-35m-x86_64-linux-g.so 和 _gi.cpython-35m-x86_64-linux-gnu.so 指向了Python 3.5 。可以通过cp命令改名即可解决问题。输入如下命令:

cp _gi_cairo.cpython-35m-x86_64-linux-g.so   _gi_cairo.cpython-37m-x86_64-linux-g.so 
cp  _gi.cpython-35m-x86_64-linux-gnu.so     _gi.cpython-37m-x86_64-linux-gnu.so 

     注意:这里具体的版本,可以根据当前的环境来修改。如36m改成35m。

   至于这里为什么需要修改Python3 指向的python3.7 ,这里可以用如下命令查看一下 gnome-terminal 的文件内容:

vi /usr/bin/gnome-terminal
#!/usr/bin/python3
...........................................
..........................................

     第一行表示执行的是/usr/bin/python3 环境,而Python3 指向的python3.7 ,因此需要修改_gi_cairo.cpython-35m-x86_64-linux-g.so 和 _gi.cpython-35m-x86_64-linux-gnu.so 中的35m到37m。至此,可以打开terminal终端工具,并执行命令,界面如下所示:

5.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。