ModuleNotFoundError:没有名为“gi”的模块

Posted

技术标签:

【中文标题】ModuleNotFoundError:没有名为“gi”的模块【英文标题】:ModuleNotFoundError: No module named 'gi' 【发布时间】:2018-01-21 21:28:11 【问题描述】:

我正在尝试运行以下程序:

import gi
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst

我得到了:

Traceback (most recent call last):
  File "application.py", line 2, in <module>
    import gi
ModuleNotFoundError: No module named 'gi'

我在使用 Python3 的 Mac Sierra (10.12.1 (16B2555)) 上。

我已经安装了 pygoject 和 gtk+3(可以在这里看到):

(cv) ✔ ~/Documents/test 
00:53 $ brew install pygobject3 --with-python3 gtk+3
Warning: pygobject3 3.24.1_1 is already installed
Warning: gtk+3 3.22.18 is already installed

我的 Python 来自我的 virtualenv:

(cv) ✘-1 ~/Documents/test 
00:53 $ which python
/Users/myuser/.virtualenvs/cv/bin/python

(cv) ✔ ~/Documents/test 
00:54 $ python --version
Python 3.6.1

如果我尝试卸载 gi 以重新安装它(正如我在 Stack 之前的一些答案中看到的那样),我会得到:

(cv) ✘-1 ~/Documents/test 
00:55 $ pip uninstall gi
Cannot uninstall requirement gi, not installed

知道什么可以解决我的问题吗?

【问题讨论】:

我的第一个猜测是您使用的是 virtualenv python,但 gi 安装在您的系统目录中。您可以停用您的 virtualenv,尝试启动 python 并导入 gi 吗?如果可行,我们可以想办法。 尝试重新创建环境,因为绑定是针对系统 Python 安装的 - 因此它们可能不会反映在您的(旧)环境中。执行pip freeze &gt; requirements.txt 以捕获您已经安装的内容,然后重新创建环境,然后尝试。 @NoufalIbrahim 显然是这种情况,因为:10:18 $ python Python 2.7.10(默认,2016 年 7 月 30 日,18:31:42)[GCC 4.2.1 兼容 Apple LLVM 8.0.0 (clang-800.0.34)] on darwin 键入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> 导入 gi >>> gi.require_version('Gst', '1.0') @NoufalIbrahim 任何想法如何进行? @NoufalIbrahim 谢谢 :) 【参考方案1】:

在我的情况下,正如@NoufalIbrahim 所指出的那样,该软件包安装在系统目录中,但没有安装在 virtualenv 中。

我已经通过执行解决了这个问题:

export PYTHONPATH=/usr/local/lib/python3.6/site-packages

【讨论】:

我很抱歉。在我最初的评论之后,我无法跟进。如果这确实是问题所在,您应该能够在您的 virtualenv python 中执行 pip install gi 并且它应该将其引入。您可以做的另一件事是使用 --system-site-packages 选项创建您的 virtualenv 以便它可以接受包在您指定的路径中。无需手动修改 pythonpath。 @NoufalIbrahim 当我使用 pip 执行您的建议时,我得到了 ERROR: Could not find a version that satisfies the requirement gi (from versions: none) ERROR: No matching distribution found for gi。你确定gi 是要安装的东西的正确名称吗? 你在使用 mac 吗?【参考方案2】:

由于缺少 gi 库,您会收到此错误。我通过在 OSX (Mac) 上运行以下命令解决了这个问题:

brew install pygobject3 gtk+3

【讨论】:

对我来说不是这样,如果你看我的问题,我表明我已经运行了这个命令,我还表明,每当我尝试再次运行该命令时,它会说这个库已经安装...问题是缺少导出站点包....【参考方案3】:

我个人解决了跑步

pip install vext
pip install vext.gi

我找到的另一个解决方案

pip install homekit
pip install pygobject

(Debian 用户:您可以将 homekit 替换为 sudo apt install libgirepository1.0-dev

【讨论】:

【参考方案4】:

我通过安装 PyGObject 安装说明中推荐的依赖解决了这个问题:

https://pygobject.readthedocs.io/en/latest/getting_started.html#getting-started

【讨论】:

【参考方案5】:

尝试运行此命令:

sudo apt install python3-gi

【讨论】:

我在 Mac 上,等效命令 (brew install python3-gi) 不起作用...

以上是关于ModuleNotFoundError:没有名为“gi”的模块的主要内容,如果未能解决你的问题,请参考以下文章

ModuleNotFoundError:没有名为“dataviz”的模块

ModuleNotFoundError:没有名为“numpy”的模块

错误:ModuleNotFoundError:没有名为“图像”的模块

ModuleNotFoundError:没有名为“knox”的模块

ModuleNotFoundError:没有名为“memoize”的模块

ModuleNotFoundError:没有名为“pssh”的模块