Python 3.13

ModuleNotFoundError: No module named 'pipes'

ModuleNotFoundError: No module named 'pipes'

What it means

pipes was removed from the standard library in Python 3.13 under PEP 594. Its only widely used function, pipes.quote, moved to shlex.quote years earlier.

Why it happens

PEP 594 removed nineteen legacy modules in Python 3.13. pipes wrapped shell pipelines around os.system and had been deprecated since 3.11.

How to fix it

  1. If you used `pipes.quote`, replace it with `shlex.quote` — it is the same function and has been the documented location since Python 3.3.
  2. If you used `pipes.Template`, rewrite the pipeline with `subprocess.run` or `subprocess.Popen`, which is safer and does not shell out through os.system.
  3. Search for it including indirect use: `grep -rn 'from pipes\|import pipes' .`
  4. Re-run your test suite on 3.13 — a removed stdlib module fails at import time, so the failure appears before any of your logic runs.

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 →