그놈 터미널이 시작되지 않습니다


34

방금 Ubuntu 16.04 시스템에 python 3.6을 설치하려고 시도했지만 이제 런처 또는에서 터미널을 실행할 수 없습니다 Ctrl + Alt + T. gnome-terminalXTerm 에서 실행하려고하는데 다음과 같은 메시지가 나타납니다.

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예상대로 파일은 터미널을 엽니 다.
  • 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

심볼릭 링크는 어느 경로에서 생성되어야합니까? 터미널 버그가 수정 될 때까지 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, 나는 우분투 18에서 파이썬 3.7 문제없이 사용할입니다
Huan의

이것을 xterm에 붙여 넣을 수 있습니까?
Tahlor

나를 위해 작동, 이것은 대답이어야하고 나는 두 번째 @Huan
user1282043

이것이 무엇을하는지에 대한 설명은 여전히 ​​도움이 될 것입니다
Daniel Holmes

8

기본 python3의 올바른 변경은 다음을 통해 수행됩니다.

sudo update-alternatives --config python3

_gi_cairo.cpython-35m-x86_64-linux-gnu.sopython3.5에서 python3.6 이상을 복사하면 문제를 해결할 수 있지만 라이브러리 일관성이 손상 될 수 있습니다. 피해야합니다.


@davidbak 우분투에 대해 불만을 제기 할 올바른 장소는 우분투 irc 또는 메일 링리스트 (또는 저장소에 패치 제출)에 있습니다.
Boris

3

나는 이것이 오래된 질문이라는 것을 알고 있지만 python3을 python 3.5로 바꾸는 것 이외의 다른 방법을 찾고있는 사람들에게는 첫 번째 줄을 /usr/bin/gnome-terminal에서 #! /usr/bin/python3로 변경할 수 있습니다 #! /usr/bin/python3.5.

참고 : 컴퓨터에는 Python 3.5가 없지만 import giPython 3.6에서는 작동하므로 3.5 대신 3.6을 사용했습니다.


gnome-terminal중단 또는이 다른 것을 유일한 것은 gnome-*내가 너무 변경해야하는 상황이?
Boris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.