Import not found python
Skill viditkbhatnagar/immunize/src/immunize/patterns/import-not-found-python
A curated pattern library that stops AI coding assistants from repeating common runtime errors. No API key. No LLM calls at runtime.
npx -y skills add viditkbhatnagar/immunize --skill import-not-found-pythonAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when writing Python imports to verify the module and symbol exist at the claimed path before committing the line.
SKILL.md
1.9 KB, as published. Nobody here has run it
import-not-found-python
Before writing from X import Y, verify the module exists at that
exact path and the symbol is exported. When AI drafts Python code
from memory, it often invents plausible-sounding module names or
guesses wrong sub-paths, and the first call explodes:
ModuleNotFoundError: No module named '_ghost_utils'
ImportError: cannot import name 'slugify' from 'myapp.utils'
Example
Wrong — module does not exist; lazy-imported inside a helper:
def make_slug(title: str) -> str:
from _ghost_utils import slugify
return slugify(title)
Right — use a real import. Stdlib often suffices:
import re
def make_slug(title: str) -> str:
return re.sub(r"[^a-z0-9]+", "-", title.lower()).strip("-")
How to verify before committing
- Check the module if it is third-party:
pip show <module>. - Check the symbol is exported: read the module's
__init__.pyor__all__, or grep the source fordef <symbol>. - Prefer explicit package paths (
from myapp.utils.text import slugify) over guessable short names (from utils import slugify) — shorter paths collide across projects and invite hallucination. - If the symbol is genuinely internal, re-export it deliberately
through
__init__.pyrather than reaching into implementation modules.
Don't paper over with try/except
try:
from _ghost_utils import slugify
except ImportError:
slugify = lambda s: s # silent fallback — hides the typo forever
A silent fallback turns a crash at startup into a broken behavior at
runtime. If the dependency is genuinely optional, raise a clear
ConfigError naming what to install; never fall back to a stub that
looks like success.