2011-07-08 90 views
7

我一直在做一些关于这个错误的研究。这里有一些与StackOverflow相关的解释,但是提出的解决方案虽然很不相关。AttributeError:'模块'对象没有属性'maketrans'

当我尝试从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脚本文件,我不进口甚至没有线索如何处理这个问题。

+1

看来你输入一个python 2模块与Python 3为'string.maketrans'在Python 3 –

回答

10

好吧,我设法让它工作。尽管是脏的解决方法:

我改性/usr/lib64/python3.2/site-packages/gi/module.py

在管线127我取代string.maketransstr.maketrans所以它与Python 3个文档的规定。

希望对我的情况有帮助的人。

雨果

3

这似乎是一个已知的bug bug737375,它是固定的(几乎就像雨果自己的解决方案)。

您可以找到pygopbject库这里的主分支修复:
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(
+0

缺席这是确切的解决方案不幸的是,谢谢。 – leetNightshade

+0

这就是我试图导入时得到的结果。 from string import maketrans ImportError:无法导入名称'maketrans' –

1

我试图用Jupyter笔记本运行string.maketrans和它的错误信息:

the module string has no attribute maketrans.

将代码更改为str.maketrans的窍门。但是,必须指出的是,我没有做出任何的改变:

/usr/lib64/python3.2/site-packages/gi/module.py 
相关问题