Terminal Gnome tidak akan mulai


34

Saya baru saja mencoba menginstal python 3.6 pada sistem Ubuntu 16.04 saya, dan sekarang saya tidak dapat menjalankan terminal dari peluncur atau dari Ctrl + Alt + T. Saya mencoba lari gnome-terminaldari XTerm dan mendapat pesan berikut:

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'

Bagaimana saya bisa memperbaiki kesalahan ini?

Perlu juga dicatat bahwa:

  • gnome-terminalFile saya sekarang adalah skrip python.
  • The gnome-terminal.realFile akan membuka terminal seperti yang diharapkan.
  • python3.5 gnome-terminal akan membuka terminal seperti yang diharapkan.

Jawaban:


34

Mungkin symlink /usr/bin/python3menunjuk ke python3.6, yang seharusnya tidak. Perbaiki dengan menjalankan perintah ini:

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

4
Untuk menambah ini: ini disebabkan oleh bug dalam python3-aptpaket; ada bug Launchpad yang terbuka di sini .
Josh

Symlink harus dibuat di jalur mana? Bukankah pyenv alternatif yang lebih baik sampai bug terminal diperbaiki?
josircg

@ josircg: Tidak yakin saya mengerti pertanyaan jalur Anda. Symlink dan executable berada di /usr/bin. Mungkin ada alternatif yang lebih baik. Jika Anda tahu ada, silakan tulis jawaban sendiri.
Gunnar Hjalmarsson

1
@ GunnarHjalmarsson di mana saya dapat menjalankan perintah ini, terminal saya tidak terbuka.
Shoyeb Sheikh

1
@ ShoyebSheikh: Mungkin Anda punya XTerm?
Gunnar Hjalmarsson

20

Anda tidak perlu mengarahkan Python3 ke python3.5, cukup menjalankan perintah:

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

Apa tepatnya yang dilakukan ini? Apakah ini aman?
wjandrea

3
Ini seharusnya jawabannya. Aman @wjandrea, saya menggunakannya tanpa masalah dengan Python 3.7 di bawah Ubuntu 18
Huan

Bisakah Anda menempelkan ini ke xterm?
Tahlor

Bekerja untuk saya, ini harus menjadi jawaban dan saya kedua @Huan
user1282043

Penjelasan tentang apa yang dilakukannya masih akan membantu
Daniel Holmes

8

Perubahan yang benar dari python3 default dilakukan melalui:

sudo update-alternatives --config python3

Meskipun menyalin _gi_cairo.cpython-35m-x86_64-linux-gnu.solebih dari python3.5 lebih dari python3.6 dapat menyelesaikan masalah ini, tetapi akan merusak konsistensi perpustakaan Anda. Dan harus dihindari.


@davidbak tempat yang tepat untuk mengeluh tentang Ubuntu ada di irc Ubuntu atau mailing list (atau mengirimkan tambalan ke repositori mereka), di stackoverflow Anda hanya menjerit ke dalam kekosongan.
Boris

3

Saya tahu ini adalah pertanyaan lama tetapi bagi mereka yang mencari cara selain mengubah python3 ke python 3.5 secara global, Anda dapat mengubah baris pertama dari /usr/bin/gnome-terminaldari #! /usr/bin/python3menjadi #! /usr/bin/python3.5.

Catatan: Saya tidak memiliki python 3.5 di komputer saya tetapi import gibekerja di python 3.6, jadi gunakan 3.6 daripada 3.5.


Apakah gnome-terminalsatu-satunya hal yang rusak atau ada gnome-*hal lain yang harus saya ubah juga?
Boris
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.