Gnome 终端无法启动

ben*_*ahl 45 gnome python gnome-terminal 16.04

我只是尝试在我的 Ubuntu 16.04 系统上安装 python 3.6,现在我无法从启动器或Ctrl + Alt + T. 我尝试gnome-terminal从 XTerm运行并收到以下消息:

Traceback (most recent call last):
  File "/usr/bin/gnome-terminal", line 9, in <module>
    from gi.repository import GLib, Gio
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module>
    from . import _gi
ImportError: cannot import name '_gi'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "/usr/bin/gnome-terminal", line 9, in <module>
    from gi.repository import GLib, Gio
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module>
    from . import _gi
ImportError: cannot import name '_gi'
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

还应注意的是:

  • 我的gnome-terminal文件现在是一个 python 脚本。
  • gnome-terminal.real文件将按预期打开终端。
  • python3.5 gnome-terminal 将按预期打开终端。

Gun*_*son 47

符号链接可能/usr/bin/python3指向 python3.6,它不应该。通过运行以下命令修复它:

sudo rm /usr/bin/python3
sudo ln -s python3.5 /usr/bin/python3
Run Code Online (Sandbox Code Playgroud)

  • 补充一点:这是由`python3-apt`包中的一个错误引起的;有一个关于它的 Launchpad 错误 [here](https://bugs.launchpad.net/ubuntu/+source/python3.6/+bug/1631367)。 (5认同)

小智 31

您不必将 Python3 指向 python3.5 ,只需运行以下命令:

cd /usr/lib/python3/dist-packages/gi/
sudo cp _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-36m-x86_64-linux-gnu.so
sudo cp _gi_cairo.cpython-35m-x86_64-linux-gnu.so _gi_cairo.cpython-36m-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)

  • 这应该是答案。@wjandrea 是安全的,我在 Ubuntu 18 下使用 Python 3.7 没有任何问题 (5认同)
  • 解释一下它的作用仍然会有帮助 (2认同)

Sae*_*eed 10

默认python3的正确更改是通过以下方式完成的:

sudo update-alternatives --config python3
Run Code Online (Sandbox Code Playgroud)

尽管复制_gi_cairo.cpython-35m-x86_64-linux-gnu.sopython3.5python3.6能解决问题,但会破坏你的库的一致性。并且应该避免。


小智 6

我知道这是一个老问题,但对于那些正在寻找除全局将 python3 更改为 python 3.5 之外的方法的人,您可以将/usr/bin/gnome-terminalfrom的第一行更改#! /usr/bin/python3#! /usr/bin/python3.5.

注意:我的电脑上没有 python 3.5,但import gi在 python 3.6 中工作,所以使用 3.6 而不是 3.5。

  • `gnome-terminal` 是唯一坏掉的东西,还是我也应该改变其他的 `gnome-*` 东西? (4认同)