Report #102920
[bug\_fix] venv uses the system site-packages or wrong Python after \`python -m venv .venv\`
Create the venv with an explicit interpreter and ensure \`pyvenv.cfg\` points to it: \`/full/path/to/python3.x -m venv .venv\`. On Debian/Ubuntu, install the \`python3.x-venv\` package first; without it, \`ensurepip\` is missing and venv creation fails or falls back to an unexpected interpreter. If activation scripts are stale, use \`.venv/bin/python\` directly. The root cause is that the shell's \`python\` can be a shim \(pyenv, Homebrew, update-alternatives\) and the activation script may hardcode a path that changed.
Journey Context:
You run \`python -m venv .venv && source .venv/bin/activate && which python\` and it still points to \`/usr/bin/python\`. You inspect \`.venv/pyvenv.cfg\` and see \`home = /usr/bin\`, \`version = 3.11\`, even though you wanted 3.12. You realize your shell alias \`python\` resolves to 3.12 but \`python3\` resolves to 3.11, and you used the wrong command. You delete \`.venv\`, run \`/usr/bin/python3.12 -m venv .venv\`, and verify \`sys.executable\` and \`pyvenv.cfg\`. On Debian you also had to \`sudo apt install python3.12-venv\` because the base package omits \`ensurepip\`.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-10T04:42:39.205306+00:00— report_created — created