AttributeError: у объекта 'module' нет атрибута 'maketrans' - PullRequest
13 голосов
/ 08 июля 2011

Я провел несколько предыдущих исследований об этой ошибке. Здесь, в StackOverflow, есть некоторые объяснения, хотя предложенные решения совершенно не связаны.

Когда я пытаюсь импортировать Gtk из gi.repository, он вылетает со следующим выводом: <br> 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, я даже понятия не имею, как с этим справиться.

Ответы [ 4 ]

18 голосов
/ 11 июля 2011

Хорошо, мне удалось заставить его работать. Несмотря на это грязный обходной путь:

Я модифицировал /usr/lib64/python3.2/site-packages/gi/module.py

в строке 127 я заменил string.maketrans на str.maketrans, чтобы он соответствовал документации Python 3.

Надеюсь помочь кому-нибудь в моих обстоятельствах.

Hugo

6 голосов
/ 06 января 2018

Я пытался запустить string.maketrans, используя блокнот Jupyter и сообщение об ошибке:

строка модуля не имеет атрибута maketrans.

Изменение кода наstr.maketrans сделал свое дело.Однако следует отметить, что мне не пришлось вносить какие-либо изменения в:

/usr/lib64/python3.2/site-packages/gi/module.py
6 голосов
/ 07 января 2012

Это, кажется, известная ошибка bug737375 , и она была исправлена ​​(почти как собственное решение Хьюго).

Исправление можно найти в основной ветке репозитория pygopbject здесь:
http://git.gnome.org/browse/pygobject/commit/?id=8f89ff24fcac627ce15ca93038711fded1a7c5ed

В любом случае я перепишу здесь, что находится в diff, поэтому, возможно, я сэкономлю вам немного времени:)

Из файла: /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(
1 голос
/ 26 мая 2019

Просто замените string.maketrans на str.maketrans

Как сказал Искрен Станиславов в ответе ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...