Python 3.13

ModuleNotFoundError: No module named 'lib2to3'

ModuleNotFoundError: No module named 'lib2to3'

What it means

lib2to3 (and the 2to3 tool) were removed in Python 3.13 (PEP 594).

Why it happens

lib2to3 relied on a grammar that couldn't track new syntax; deprecated in 3.11, removed in 3.13. Build tooling or a dependency that imported lib2to3 (often as a code fixer) breaks on a python3.13 runtime.

How to fix it

  1. Replace lib2to3-based fixers with a maintained concrete-syntax-tree library: `LibCST` or `parso`.
  2. If a dependency pulled in lib2to3 transitively, upgrade it — most have dropped it.
  3. For a one-off Python 2→3 conversion, run 2to3 from an older Python (≤3.12) before upgrading the runtime.
  4. Re-test on Python 3.13.

Related deadline: Lambda Python 3.11 EOL2027-07-31.

Find every instance in your project

The free EOLkits scanner runs in your browser (nothing uploaded) and flags this and related breakages across your IaC and dependency files.

Primary source: https://docs.python.org/3/whatsnew/3.13.html

Get the full migration audit — $299, hash-anchored PDF →