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 projected create/update restrictions2027-07-31.

Check configured patterns in your project

The free EOLkits scanner processes files in your browser and flags selected related patterns in supported IaC and dependency files. File names and contents are not uploaded; bounded aggregate file and finding counts may be sent. It is not a complete source or AWS-account scan.

Prefer a 10-second check? Paste your config into the free AWS EOL checker. Pasted input is not uploaded; bounded first-party usage events may be sent.

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

Inspect the $299 report sample and availability →