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

Col*_*tru 36 python libraries

在 Ubuntu 中对默认 Python 版本进行了一些不太聪明的编辑后,从 2.7 到 3.2,我最终破坏了我的整个系统。我的电脑骤降,一切都停止了工作后,我试图恢复我的变化(通过链接/usr/bin/python2.7/usr/bin/python和改变默认的版本/usr/share/python/debian_defaults回到2.7),但有些事情仍然打破。

例如,当我输入import giPython 解释器时,我收到以下消息:

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

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

python --version 现在返回:

 Python 2.7.2
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*hew 43

我找到了三种方法来做到这一点:

  1. 简单的方法:

    sudo apt-get install python3-gi

    或者

  2. 对于 virtualenv 用户 - vext方式

    pip install vext

    pip install vext.gi

  3. 纯python开发者方式:

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

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

    安装python包:

    pip install gobject PyGObject


pru*_*wan 12

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

conda install -c conda-forge pygobject 
Run Code Online (Sandbox Code Playgroud)

另见:https : //bugs.launchpad.net/ubuntu/+source/ibus/+bug/1611523

  • 这次唯一对我有用的方法 (3认同)

Pie*_*NAY 8

这里找到的对我有用的解决方法很少:

sudo nano /usr/bin/gnome-tweak-tool
Run Code Online (Sandbox Code Playgroud)

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


Jer*_*cha 8

在终端中运行此命令:

sudo apt install python3-gi
Run Code Online (Sandbox Code Playgroud)

或者如果您需要 Python2 支持:

sudo apt install python-gi
Run Code Online (Sandbox Code Playgroud)


jco*_*ado 2

就我而言:

>>> import gi
>>> gi.__file__
'/usr/lib/python2.7/dist-packages/gi/__init__.pyc'
Run Code Online (Sandbox Code Playgroud)

因此,您必须检查是否有该文件可用。如果不是,则检查该 /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 用于查找该文件的所有目录并检查您的环境是否正确。