Python 3.13

ModuleNotFoundError: No module named 'cgi'

ModuleNotFoundError: No module named 'cgi'

What it means

The cgi and cgitb modules were removed in Python 3.13 (PEP 594, the 'dead batteries' cleanup).

Why it happens

cgi was deprecated in 3.11 and removed in 3.13. Code or a dependency still imports it — commonly for parse_qs or multipart parsing — and breaks after moving to a python3.13 runtime.

How to fix it

  1. Replace `cgi.parse_qs` with `urllib.parse.parse_qs`.
  2. Replace `cgi.escape` with `html.escape`.
  3. For multipart/form-data, use a maintained parser (e.g. `multipart`, `werkzeug`, or your web framework's).
  4. Upgrade dependencies that still import cgi, then 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 →