我刚刚尝试在我的 Ubuntu 16.04 系统上安装 python 3.6,现在我无法从启动器或从++Ctrl运行终端。我尝试从 XTerm 运行并收到以下消息:AltTgnome-terminal
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
文件现在是一个 python 脚本。 - 该
gnome-terminal.real
文件将按预期打开终端。 python3.5 gnome-terminal
将按预期打开终端。
答案1
符号链接可能/usr/bin/python3
指向 python3.6,但实际上不应该指向它。请运行以下命令来修复此问题:
sudo rm /usr/bin/python3
sudo ln -s python3.5 /usr/bin/python3
答案2
您不必将 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
答案3
通过以下方式正确更改默认的 python3:
sudo update-alternatives --config python3
_gi_cairo.cpython-35m-x86_64-linux-gnu.so
虽然从复制python3.5
到python3.6
可以解决问题,但会破坏库的一致性。因此应避免。
答案4
真正原因 + 解决方案 - Python3.7 Gnome 终端混乱 - Ubuntu Linux Mint
这个问题在另一篇文章中从未得到回答升级 Python 到 3.7 后终端无法打开所以我给出原因、理由和解决方案。
安装python3.7,正确做法,但缺少 PyGObject gi 导致 Gnome Terminal 在启动时失败,轻松修复
sudo apt update && sudo apt upgrade && sudo apt autoremove
sudo apt install python3.7 python3.7-dev ffmpeg
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6
1sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7
2sudo update-alternatives --config python3
# 选择 3.7python3 -V
# 应为 3.7.5 或更高版本- 暂时不要在这里重新启动..,否则 gnome 终端将会崩溃。
新手解决方法:在 Linux 高级恢复模式下 - (因此请不要重新启动)
- $ 不要这样做
sudo update-alternatives --config python3
# 选择 3.6 它会恢复您的终端但不是解决方案。
(说明:-[https://pygobject.readthedocs.io/en/latest/getting_started.html#ubuntu-getting-started][1])
解决方案只是安装缺少的内容。
python3 -V
# 必须是 Python 3.7mkdir -p ~/.local/bin ; cd .local/bin
vi hello.py
# 使用 nano 或任何编辑器 - 这是一个测试程序。请参阅最后的参考链接。# Test script import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk window = Gtk.Window(title="Hello World") window.show() window.connect("destroy", Gtk.main_quit) Gtk.main()
sudo update-alternatives --config python3
# 设置 Python 3.7python3 hello.py
# 它不起作用所以安装东西...sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0
sudo apt install libgirepository1.0-dev gcc libcairo2-dev pkg-config python3.7-dev
python3 hello.py
# 它可能仍然无法工作,安装更多东西
如果你使用 pip install 来解决,请注意,它安装的是用户仅有的。
对于其他 Linux 或非 pip 安装,请使用末尾的链接。
sudo -k
# 请注意,pip 不受安全信任,请关闭 sudo!python3 -m pip install -U pycairo
# 这会自动使用 pip3python3 -m pip install -U PyGObject
# 这解决了问题!python3 hello.py
# 有效!注意:其他用户也必须安装相同的程序!sudo shutdown -r now
# 好的,现在您可以重新启动了。Gnome 终端将正常工作。
- 注意我的 pip 风格的 python3 实际上调用的是 pip3 而不是 pip。
- 真正原因是 Ubuntu 或 Linux Mint:/usr/bin/gnome-terminal 调用默认的 python3(3.7)并发现您的 gi PyGObject 包含丢失,因此终端无法使用,并且每个用户都缺少控制面板。
结论,你可以继续升级你的 Python。
参考文献:[1]:PyGObject 包括 gi 测试https://pygobject.readthedocs.io/en/latest/getting_started.html#ubuntu-getting-started