สถานี Gnome จะไม่เริ่มทำงาน


34

ฉันเพียงแค่พยายามที่จะติดตั้งหลาม 3.6 บนระบบ Ubuntu 16.04 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'

ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร?

ควรสังเกตว่า:

  • gnome-terminalไฟล์ของฉันตอนนี้เป็นสคริปต์หลาม
  • gnome-terminal.realไฟล์จะเปิด terminal ตามที่คาดไว้
  • python3.5 gnome-terminal จะเปิดเครื่องตามที่คาดไว้

คำตอบ:


34

อาจ symlink /usr/bin/python3ชี้ไปที่ python3.6 ซึ่งไม่ควร แก้ไขด้วยการรันคำสั่งเหล่านี้:

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

4
หากต้องการเพิ่มในส่วนนี้: สิ่งนี้เกิดจากบั๊กในpython3-aptแพ็คเกจ; มีข้อผิดพลาดเปิด Launchpad เกี่ยวกับเรื่องนี้ที่นี่
Josh

ควรสร้าง symlink บนเส้นทางใด pyenv ไม่ใช่ทางเลือกที่ดีกว่าจนกว่าเทอร์มินัลบั๊กจะได้รับการแก้ไขหรือไม่
josircg

@ josircg: ไม่แน่ใจว่าฉันเข้าใจคำถามเส้นทางของคุณ ทั้ง symlink /usr/binและอาศัยอยู่ที่ปฏิบัติการใน อาจมีทางเลือกที่ดีกว่า หากคุณรู้จักกรุณาเขียนคำตอบของตัวเอง
Gunnar Hjalmarsson

1
@GunnarHjalmarsson ฉันสามารถเรียกใช้คำสั่งเหล่านี้ได้ที่ใดเทอร์มินัลของฉันไม่เปิด
Shoyeb Sheikh

1
@ShoyebSheikh: บางทีคุณอาจมี XTerm?
Gunnar Hjalmarsson

20

คุณไม่จำเป็นต้องชี้ 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

สิ่งนี้ทำอะไรกันแน่? ปลอดภัยไหม
wjandrea

3
นี่ควรเป็นคำตอบ มันปลอดภัย @wjandrea ฉันใช้โดยไม่มีปัญหากับ Python 3.7 ภายใต้ Ubuntu 18
Huan

คุณสามารถวางสิ่งเหล่านี้ลงใน xterm ได้หรือไม่?
Tahlor

ได้ผลสำหรับฉันนี่ควรเป็นคำตอบและฉันสอง @Huan
user1282043

คำอธิบายว่าสิ่งนี้จะมีประโยชน์อย่างไร
Daniel Holmes

8

การเปลี่ยนค่าเริ่มต้นที่เหมาะสมของ python3 ทำได้ผ่าน:

sudo update-alternatives --config python3

แม้ว่าการคัดลอกส่วนที่_gi_cairo.cpython-35m-x86_64-linux-gnu.soเกินจาก python3.5 บน python3.6 สามารถแก้ไขปัญหาได้ แต่จะทำให้ห้องสมุดของคุณไม่ทำงาน และควรหลีกเลี่ยง


@davidbak สถานที่ที่ถูกต้องสำหรับบ่นเกี่ยวกับ Ubuntu อยู่ในรายการ Ubuntu irc หรือรายชื่อผู้รับจดหมาย (หรือส่งแพตช์ไปยังที่เก็บของพวกเขา) ใน stackoverflow คุณเพียงแค่กรีดร้องเป็นโมฆะ
Boris

3

ฉันรู้ว่านี่เป็นคำถามเก่า แต่สำหรับผู้ที่มองหาวิธีอื่นนอกเหนือจากการเปลี่ยน python3 เป็น python 3.5 ทั่วโลกคุณสามารถเปลี่ยนบรรทัดแรก/usr/bin/gnome-terminalจาก#! /usr/bin/python3เป็น#! /usr/bin/python3.5เป็น

หมายเหตุ: ฉันไม่มี python 3.5 บนคอมพิวเตอร์ของฉัน แต่ใช้import giงานได้ใน python 3.6 ดังนั้นใช้ 3.6 แทน 3.5


เป็นgnome-terminalสิ่งเดียวที่แบ่งหรือมีอื่น ๆgnome-*สิ่งที่ฉันควรเปลี่ยนด้วยหรือไม่
Boris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.