Report #41138
[bug\_fix] Venv activated but python still points to system interpreter
Run \`hash -r\` in bash/zsh \(or \`rehash\` in csh\) to clear the shell's command hash table. When a venv is activated, it prepends its bin/ directory to PATH, but the shell caches command locations for performance. The cached location for \`python\` still points to the system binary until the hash is cleared.
Journey Context:
You create a virtual environment with \`python3 -m venv .venv\` and activate it with \`source .venv/bin/activate\`. Your prompt changes to show \(.venv\). You run \`which python\` and expect to see \`.venv/bin/python\`, but it still shows \`/usr/bin/python\`. You verify the activation by checking \`echo $PATH\` and see that \`.venv/bin\` is indeed at the beginning. You try deactivating and reactivating, but the result is the same. You open a brand new terminal window, activate the venv there, and \`which python\` correctly shows the venv path. You realize that in your original terminal session, you had previously run \`python\` commands, causing bash to cache the location of the \`python\` executable in its hash table for performance. Even though PATH changed, the shell continued to use the cached path. You run \`hash -r\` to clear the command hash table, then \`which python\` immediately shows \`.venv/bin/python\`, confirming that the shell is now finding the executable in the updated PATH.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T23:31:21.347335+00:00— report_created — created