Thiết bị đầu cuối Gnome sẽ không bắt đầu


34

Tôi vừa thử cài đặt python 3.6 trên hệ thống Ubuntu 16.04 của mình và bây giờ tôi không thể chạy thiết bị đầu cuối từ trình khởi chạy hoặc từ Ctrl + Alt + T. Tôi đã cố chạy gnome-terminaltừ XTerm và nhận được thông báo sau:

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'

Làm thế nào tôi có thể sửa lỗi này?

Cũng cần lưu ý rằng:

  • gnome-terminalTập tin của tôi bây giờ là một kịch bản python.
  • Các gnome-terminal.realtập tin sẽ mở thiết bị đầu cuối như mong đợi.
  • python3.5 gnome-terminal sẽ mở thiết bị đầu cuối như mong đợi.

Câu trả lời:


34

Có lẽ các symlink /usr/bin/python3trỏ đến python3.6, điều này không nên. Khắc phục bằng cách chạy các lệnh sau:

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

4
Để thêm vào điều này: điều này là do lỗi trong python3-aptgói; Có một lỗi Launchpad về nó ở đây .
Josh

Các symlink nên được tạo trên đường dẫn nào? Không phải pyenv là sự thay thế tốt hơn cho đến khi lỗi thiết bị đầu cuối được khắc phục?
josircg 17/03/18

@josircg: Không chắc tôi hiểu câu hỏi về con đường của bạn. Cả symlink và thực thi đều nằm trong /usr/bin. Cũng có thể có những lựa chọn thay thế tốt hơn. Nếu bạn biết bất kỳ, xin vui lòng viết một câu trả lời riêng.
Gunnar Hjalmarsson

1
@GunnarHjalmarsson nơi tôi có thể chạy các lệnh này, thiết bị đầu cuối của tôi không mở.
Shoyeb Sheikh

1
@ShoyebSheikh: Có lẽ bạn có XTerm?
Gunnar Hjalmarsson

20

Bạn không cần phải trỏ Python3 tới python3.5, chỉ cần chạy các lệnh:

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

Điều này làm gì chính xác? Nó có an toàn không?
wjandrea

3
Đây nên là câu trả lời. Nó an toàn @wjandrea, tôi sử dụng nó mà không gặp vấn đề gì với Python 3.7 trong Ubuntu 18
Huân

Bạn có thể dán chúng vào xterm không?
Tahlor

Làm việc cho tôi, đây sẽ là câu trả lời và tôi thứ hai @Huan
user1282043

Một lời giải thích về những gì nó vẫn sẽ hữu ích
Daniel Holmes

8

Thay đổi đúng của python3 mặc định được thực hiện thông qua:

sudo update-alternatives --config python3

Mặc dù sao chép _gi_cairo.cpython-35m-x86_64-linux-gnu.sotừ python3.5 qua python3.6 có thể giải quyết vấn đề, nhưng sẽ phá vỡ tính nhất quán thư viện của bạn. Và nên tránh.


@davidbak là nơi chính xác để phàn nàn về Ubuntu nằm trong danh sách gửi thư hoặc thư điện tử của Ubuntu (hoặc gửi các bản vá cho kho lưu trữ của họ), trên stackoverflow bạn chỉ đang hét vào chỗ trống.
Boris

3

Tôi biết đây là một câu hỏi cũ nhưng đối với những người tìm kiếm một cách khác ngoài việc thay đổi python3 thành python 3.5 trên toàn cầu, bạn có thể thay đổi dòng đầu tiên /usr/bin/gnome-terminaltừ #! /usr/bin/python3thành #! /usr/bin/python3.5.

Lưu ý: Tôi không có python 3.5 trên máy tính của mình nhưng import gihoạt động trong python 3.6, vì vậy đã sử dụng 3.6 thay vì 3.5.


gnome-terminalthứ duy nhất bị phá vỡ hoặc có những gnome-*thứ khác mà tôi cũng nên thay đổi?
Boris
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.