#linux #base64 #python-3.9
#linux #base64 #python-3.9
Вопрос:
После обновления с python 3.8.0 до python 3.9.1 интерфейс клиента tremc transmission BitTorrent выдает decodestrings is not an attribute of base64
ошибку всякий раз, когда я нажимаю на запись торрента, чтобы проверить детали.
Мои системные характеристики: ОС: Ядро Arch linux: 5.6.11-clear-linux
Ответ №1:
Итак, я зашел в каталог site-packages и с помощью ripgrep попытался найти decodestring
строку.
rg decodestring
paramiko/py3compat.py
39: decodebytes = base64.decodestring
После изучения py3compat.py файл, я нашел этот блок:
PY2 = sys.version_info[0] < 3
if PY2:
string_types = basestring # NOQA
text_type = unicode # NOQA
bytes_types = str
bytes = str
integer_types = (int, long) # NOQA
long = long # NOQA
input = raw_input # NOQA
decodebytes = base64.decodestring
encodebytes = base64.encodestring
Таким образом, decodebytes заменили (псевдоним) атрибут decodestring base64 для версии python> = 3
Это должно быть новое дополнение, потому что tremcработал нормально до версии 3.8.*.
Открыл скрипт tremc, нашел строку с ошибкой (строка 441), просто заменил атрибут decodestring
на decodebytes
.Быстрое исправление до следующего обновления.
PS: Проверил репозиторий github, и для него есть ожидающий запрос на извлечение. Если вы не хотите ждать следующего выпуска, а также не хотите взламывать его так, как я, вы можете получить его свежую сборку из репозитория, хотя это не сильно отличается от моего метода
Ответ №2:
base64.encodestring() и base64.decodestring(), псевдонимы, устаревшие со времен Python 3.1, были удалены.
используйте base64.encodebytes() и base64.decodebytes()