Gnome 终端无法启动

Gnome 终端无法启动

我刚刚尝试在我的 Ubuntu 16.04 系统上安装 python 3.6,现在我无法从启动器或从++Ctrl运行终端。我尝试从 XTerm 运行并收到以下消息:AltTgnome-terminal

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'

我该如何修复这个错误?

还应注意的是:

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

答案1

符号链接可能/usr/bin/python3指向 python3.6,但实际上不应该指向它。请运行以下命令来修复此问题:

sudo rm /usr/bin/python3
sudo ln -s python3.5 /usr/bin/python3

答案2

您不必将 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

答案3

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

sudo update-alternatives --config python3

_gi_cairo.cpython-35m-x86_64-linux-gnu.so虽然从复制python3.5python3.6可以解决问题,但会破坏库的一致性。因此应避免。

答案4

真正原因 + 解决方案 - Python3.7 Gnome 终端混乱 - Ubuntu Linux Mint

这个问题在另一篇文章中从未得到回答升级 Python 到 3.7 后终端无法打开所以我给出原因、理由和解决方案。

安装python3.7,正确做法,但缺少 PyGObject gi 导致 Gnome Terminal 在启动时失败,轻松修复

  • sudo apt update && sudo apt upgrade && sudo apt autoremove
  • sudo apt install python3.7 python3.7-dev ffmpeg
  • sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
  • sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
  • sudo update-alternatives --config python3 # 选择 3.7
  • python3 -V # 应为 3.7.5 或更高版本
  • 暂时不要在这里重新启动..,否则 gnome 终端将会崩溃。

新手解决方法:在 Linux 高级恢复模式下 - (因此请不要重新启动)

  • $ 不要这样做sudo update-alternatives --config python3# 选择 3.6 它会恢复您的终端但不是解决方案。

(说明:-[https://pygobject.readthedocs.io/en/latest/getting_started.html#ubuntu-getting-started][1])

解决方案只是安装缺少的内容。

  • python3 -V # 必须是 Python 3.7

  • mkdir -p ~/.local/bin ; cd .local/bin

  • vi hello.py # 使用 nano 或任何编辑器 - 这是一个测试程序。请参阅最后的参考链接。

        # Test script
        import gi
        gi.require_version("Gtk", "3.0")
        from gi.repository import Gtk
    
        window = Gtk.Window(title="Hello World")
        window.show()
        window.connect("destroy", Gtk.main_quit)
        Gtk.main()
    
  • sudo update-alternatives --config python3 # 设置 Python 3.7

  • python3 hello.py # 它不起作用所以安装东西...

  • sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0

  • sudo apt install libgirepository1.0-dev gcc libcairo2-dev pkg-config python3.7-dev

  • python3 hello.py # 它可能仍然无法工作,安装更多东西

如果你使用 pip install 来解决,请注意,它安装的是用户仅有的。
对于其他 Linux 或非 pip 安装,请使用末尾的链接。

  • sudo -k # 请注意,pip 不受安全信任,请关闭 sudo!
  • python3 -m pip install -U pycairo # 这会自动使用 pip3
  • python3 -m pip install -U PyGObject # 这解决了问题!
  • python3 hello.py # 有效!注意:其他用户也必须安装相同的程序!
  • sudo shutdown -r now # 好的,现在您可以重新启动了。Gnome 终端将正常工作。
  • 注意我的 pip 风格的 python3 实际上调用的是 pip3 而不是 pip。
  • 真正原因是 Ubuntu 或 Linux Mint:/usr/bin/gnome-terminal 调用默认的 python3(3.7)并发现您的 gi PyGObject 包含丢失,因此终端无法使用,并且每个用户都缺少控制面板。

结论,你可以继续升级你的 Python

参考文献:[1]:PyGObject 包括 gi 测试https://pygobject.readthedocs.io/en/latest/getting_started.html#ubuntu-getting-started

相关内容