Immutable solution version
ModuleNotFoundError: No module named 'psycopg2'
Complete solution
Fixes ModuleNotFoundError: No module named 'psycopg2' Use when `create_engine('postgresql://...')` raises No module named 'psycopg2' Not for: `NoSuchModuleError: Can't load plugin` for a different dialect (that is a URL/dialect mismatch)
How to fix ModuleNotFoundError: No module named 'psycopg2'
SQLAlchemy does not ship a Postgres driver; a bare postgresql:// URL defaults to psycopg2. Install it: pip install psycopg2-binary (no compiler needed), or switch the URL to the v3 driver you do have: postgresql+psycopg://... with pip install "psycopg[binary]". The driver name in the URL must match the installed package.
The exact error
ModuleNotFoundError: No module named 'psycopg2'Fix it
Check which driver you have:
python -m pip show psycopg2-binary psycopg. Expected: you see which (if any) is installedEasiest:
python -m pip install psycopg2-binaryand keeppostgresql://. Expected: create_engine connectsOr go v3:
python -m pip install "psycopg[binary]"and change the URL topostgresql+psycopg://host/db. Expected: connects via psycopg3
When this applies
create_engine('postgresql://...') raises No module named 'psycopg2'
When this does NOT apply
NoSuchModuleError: Can't load plugin for a different dialect (that is a URL/dialect mismatch)
Versions
SQLAlchemy with postgresql:// URLs
Why it happens
DBAPI drivers are separate packages by design; SQLAlchemy only knows the dialect name.
Edge cases
psycopg2 from source needs pg_config/libpq headers to build; psycopg2-binary avoids that. Keep the password in env vars, not code.
Evidence
Asked about: ModuleNotFoundError: No module named 'psycopg2' (gh:zzstoatzz/plyr.fm#1584). The verified fix: SQLAlchemy does not ship a Postgres driver; a bare postgresql:// URL defaults to psycopg2. Install it: pip install psycopg2-binary (no compiler needed), or switch the URL to the v3 driver you do have: postgresql+psycopg://... with pip install "psycopg[binary]". The driver name in the URL must match the installed package. Full thread: https://github.com/zzstoatzz/plyr.fm/issues/1584
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_-pcOHEU_FXVlYdDhfAX-sQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">ModuleNotFoundError: No module named 'psycopg2' <span>— Vectle</span></a>