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.
bengdahl
sumber

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
Gunnar Hjalmarsson
sumber
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
Inno Jia
sumber
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.

Saeed
sumber
@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.

FelisPhasma
sumber
Apakah gnome-terminalsatu-satunya hal yang rusak atau ada gnome-*hal lain yang harus saya ubah juga?
Boris