![如何修复“gi.require_version('Gtk', '3.0')”的“'module'对象没有属性'required_version'”?](https://linux22.com/image/1151117/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%E2%80%9Cgi.require_version('Gtk'%2C%20'3.0')%E2%80%9D%E7%9A%84%E2%80%9C'module'%E5%AF%B9%E8%B1%A1%E6%B2%A1%E6%9C%89%E5%B1%9E%E6%80%A7'required_version'%E2%80%9D%EF%BC%9F.png)
我正在与一些人合作开发一个虚假新闻检测程序,并取得了一些重大进展,但小组 5 名成员中只有 1 人可以运行 Python 程序。我正在运行一个只有几个小时的全新安装的 Ubuntu 16.04,可以运行该程序的人有 Fedora 26。尝试运行该程序时收到的错误是:
conesco3@Conesco3:~/Documents/Alternative-News-Checker$ sudo python main.py
[sudo] password for conesco3:
Traceback (most recent call last):
File "main.py", line 6, in <module>
gi.require_version('Gtk', '3.0')
AttributeError: 'module' object has no attribute 'require_version'
我去安装了 gtk+-3.0:
sudo apt install gtk+-3.0
但这没有帮助。
我还安装了 Glade(程序的 UI 部分就是用它制作的),尝试修复它。但这也没能解决这个错误。
这些文件可以在这里找到如果您想尝试重新创建该问题,我很困惑,因此任何帮助都将不胜感激,并且我尝试了其他几种修复建议,例如安装,python-gobject
但它们都没有解决问题。
我可以运行一个较小规模的程序并得到相同的错误(截屏)该程序足以产生这个问题:
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
window = Gtk.Window(title="Hello World")
window.show()
window.connect("delete-event", Gtk.main_quit)
Gtk.main()
运行该简化的程序如下所示:
conesco3@Conesco3:~$ cd Desktop/
conesco3@Conesco3:~/Desktop$ python2 hello.py
Traceback (most recent call last):
File "hello.py", line 2, in <module>
gi.require_version("Gtk", "3.0")
AttributeError: 'module' object has no attribute 'require_version'
conesco3@Conesco3:~/Desktop$
编辑:根据其他人的建议,我创建了一个虚拟环境,并将 Fedora 计算机的要求传输到一个 txt 文件中,然后在虚拟环境中再次安装它们;这出现了同样的错误。
的输出python2 -c 'import gi; print(gi.__file__)'
为:
/usr/local/lib/python2.7/dist-packages/gi/__init__.pyc
答案1
您要导入的模块gi
不是来自 Ubuntu GI 包的模块python-gi
,而是您在 中手动安装的模块/usr/local/
。它要么是非常旧的版本,要么是碰巧也被称为 的不同版本gi
。
将其删除并确保该包python-gi
已安装。