Report #103739
[bug\_fix] ModuleNotFoundError: No module named 'requests' even though pip says requests is installed
Run pip through the same interpreter you run code with: \`python -m pip install requests\` instead of a bare \`pip install\`. Then verify alignment with \`python -c "import sys; print\(sys.executable\)"\` and \`python -m pip list\`. If a venv exists, activate it before both commands; never mix the system \`pip\` with a venv \`python\`.
Journey Context:
You create a fresh venv, activate it, run \`pip install requests\`, then \`python script.py\` and it crashes with ModuleNotFoundError. You rerun \`pip install requests\` and pip reports Requirement already satisfied. The trap is that the shell still resolved \`pip\` to the system/global pip \(or a different venv\), so the package landed in site-packages for an interpreter your \`python\` command is not using. The debugging loop is maddening because both commands look like they belong to the same environment. Only when you print sys.executable do you discover the mismatch: \`python\` points to the venv but \`pip\` points to /usr/bin/pip3, or vice versa. Using \`python -m pip\` forces the pip module to execute inside the interpreter that will later import the package, eliminating the ambiguity entirely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-13T04:36:51.021771+00:00— report_created — created