什么原因导致 Python 中缺少“gi”模块?

什么原因导致 Python 中缺少“gi”模块?

在对 Ubuntu 中的默认 Python 版本进行了一些不太明智的编辑(从 2.7 到 3.2)后,我最终破坏了整个系统。在我的计算机崩溃并且所有东西都停止工作后,我尝试恢复我的更改(通过链接/usr/bin/python2.7并将/usr/bin/python默认版本改/usr/share/python/debian_defaults回 2.7),但有些东西仍然有问题。

例如,当我import gi在 Python 解释器中输入时,我收到以下消息:

>>> import gi
 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 ImportError: No module named gi
>>> 

某些程序也会出现此错误(例如:gnome tweak tool)。我尝试从软件中心和源代码重新安装 Python,但同样的错误仍然存​​在。

python --version现在返回:

 Python 2.7.2

并且一些依赖 Python 2.7 的软件包现在可以运行(例如软件中心),但有些东西仍然有问题。我能做些什么来完全重新安装 Python 2.7 作为默认版本?

答案1

我发现了三种方法可以做到这一点:

  1. 简单的方法:

    sudo apt install python3-gi
    
  2. 维克斯对于虚拟环境用户来说,方法如下:

    pip install vext
    pip install vext.gi
    
  3. 纯 Python 开发方式:

    安装一堆开发人员的东西:

    sudo apt install pkg-config libcairo2-dev gcc python3-dev libgirepository1.0-dev
    

    安装python包:

    pip install PyGObject
    

答案2

如果你安装了 anaconda 并且它已成为默认的 python 环境,则可以通过以下方式安装 gi 模块:

conda install -c conda-forge pygobject 

另请参阅: https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/1611523

答案3

几乎找不到解决方法这里对我有用:

sudo nano /usr/bin/gnome-tweak-tool

改成#!/usr/bin/env python#!/usr/bin/python

答案4

就我而言:

>>> import gi
>>> gi.__file__
'/usr/lib/python2.7/dist-packages/gi/__init__.pyc'

因此,您需要检查是否有该文件可用。如果没有,则检查该 /usr/lib/python2.7/dist-packages/gi/__init__.py/usr/share/pyshared/gi/__init__.py。您应该有该文件,因为您有python-gobject 3.0.0-0ubuntu4(是的,我有完全相同的版本)。

如果gi包在那里,那么你应该看看你的sys.path输出。如果/usr/lib/python2.7/dist-packages没有,那么添加它并重试。

一旦导入成功,您就可以设置PYTHONPATH或进一步调查路径设置不正确的原因。

悬而未决的问题可能是由于site.py某种原因您的文件无效,或者更可能是您没有获得正确信息site.py(它应该在 下/usr/lib/python2.7/)。在这种情况下,请查看这里检查 python 用来查找该文件的所有目录并检查您的环境是否正确。

相关内容