我以前一直在研究这个错误。这里有一些与StackOverflow相关的解释,但建议的解决方案完全不相关。
当我尝试从gi.repository导入Gtk时,它会崩溃并输出以下内容:
bash-4.2$ python3
Python 3.2 (r32:88445, Feb 21 2011, 21:11:06)
[GCC 4.6.0 20110212 (Red Hat 4.6.0-0.7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from gi.repository import Gtk
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.2/site-packages/gi/importer.py", line 76, in load_module
dynamic_module._load()
File "/usr/lib64/python3.2/site-packages/gi/module.py", line 251, in _load
overrides_modules = __import__('gi.overrides', fromlist=[self._namespace])
File "/usr/lib64/python3.2/site-packages/gi/overrides/Gtk.py", line 400, in <module>
class MessageDialog(Gtk.MessageDialog, Dialog):
File "/usr/lib64/python3.2/site-packages/gi/overrides/Gtk.py", line 404, in
MessageDialog
type=Gtk.MessageType.INFO,
File "/usr/lib64/python3.2/site-packages/gi/module.py", line 127, in __getattr__
ascii_upper_trans = string.maketrans(
AttributeError: 'module' object has no attribute 'maketrans'
由于这是直接从python控制台导入而不是通过执行python文件脚本,我甚至不知道如何处理它。
答案 0 :(得分:17)
好的,我设法让它发挥作用。尽管是一个肮脏的解决方法:
我修改了/usr/lib64/python3.2/site-packages/gi/module.py
我将string.maketrans
替换为str.maketrans
,因此它符合python 3文档。
希望在我的环境中为任何人提供帮助。
雨果
答案 1 :(得分:6)
我试图使用Jupyter笔记本运行string.maketrans
,并显示错误消息:
模块字符串没有属性maketrans。
将代码更改为str.maketrans
就可以了。但必须注意的是,我不需要对:
/usr/lib64/python3.2/site-packages/gi/module.py
答案 2 :(得分:4)
这似乎是一个已知的错误bug737375并且它已被修复(几乎像Hugo自己的解决方案)。
您可以在pygopbject存储库的master分支中找到修复程序:
http://git.gnome.org/browse/pygobject/commit/?id=8f89ff24fcac627ce15ca93038711fded1a7c5ed
无论如何,我会在这里重写差异中的内容,所以也许我会节省你一些时间:)
来自档案:/usr/lib64/python3.2/site-packages/gi/module.py
你应该替换:
import string
使用:
try:
maketrans = ''.maketrans
except AttributeError:
# fallback for Python 2
from string import maketrans
再次替换(第130行):
ascii_upper_trans = string.maketrans(
使用:
ascii_upper_trans = maketrans(
答案 3 :(得分:0)
string.maketrans
替换为str.maketrans
如Искрен Станиславов在下面的回答中所述。