2011-07-08 84 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 
相關問題