Report #72227
[bug\_fix] ModuleNotFoundError: No module named 'requests' despite \`pip install requests\` showing Requirement already satisfied
Use \`python -m pip install \` instead of calling \`pip\` directly. Root cause: The \`pip\` executable on PATH belongs to a different Python interpreter \(system/global\) than the \`python\` binary being used to run the script. By invoking \`python -m pip\`, you ensure the pip module runs using the exact same interpreter that will import the package, guaranteeing installation into site-packages of the correct environment.
Journey Context:
You create a fresh venv with \`python -m venv .venv\`, activate it, then run \`pip install requests\`. Everything appears to install successfully. However, when you run \`python script.py\`, it crashes with ModuleNotFoundError for requests. You verify with \`pip list\` and see requests is indeed listed. Confused, you run \`which pip\` and \`which python\` and realize they point to different locations—\`pip\` is /usr/local/bin/pip \(global\) while \`python\` is /project/.venv/bin/python. The shell's PATH resolution found the global pip before the venv's pip, or the venv activation didn't properly modify PATH. Using \`python -m pip\` forces the Python interpreter to locate its own pip module, bypassing the PATH confusion entirely and ensuring the package installs into the venv's site-packages where the script can find it.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T03:48:56.898568+00:00— report_created — created