Python Glossary English

все Python 3до 3.13Удалено из стандартной библиотекипонятие

lib2to3

удалённые модули

Библиотека программы 2to3: разбор Python-кода с сохранением форматирования и перевод с Python 2. Удалена в Python 3.13 — для разбора используйте ast.

Синтаксис

import lib2to3  # до 3.13; 2to3 file.py

lib2to3 разбирал исходник в дерево, сохраняющее пробелы и комментарии, и правил его наборами фиксеров; на нём работала программа 2to3, переводившая код с Python 2 на Python 3 (print 'hi' → print('hi')), а ещё black и другие инструменты. Убран, потому что его парсер LL(1) не умеет новый синтаксис: начиная с Python 3.10 (match, скобки в with) он ломается. Устарел в 3.11, удалён в 3.13 вместе с программой 2to3. Как переписать: дерево кода даёт ast.parse(), обратно в текст — ast.unparse() (комментарии при этом теряются); правки с сохранением форматирования делают libcst и parso. Старый код на Python 2 переводят 2to3 из Python 3.12 или пакет fissix — форк lib2to3 на PyPI.

Примеры

# Python 3.13+
try:
    import lib2to3
except ModuleNotFoundError as e:
    print(type(e).__name__)  # → ModuleNotFoundError
# Python 3.13+
import ast
tree = ast.parse('x = 1+2  # sum')
print(ast.unparse(tree))  # → x = 1 + 2

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности