An IDE can run Python even when `where.exe python` returns no match in a separate shell. I’m intrigued that a blank lookup can coexist with a running interpreter.
You can get the runtime path from the environment that launches your program. The first distinction is between a command your shell can find and the executable reported by the running process.
Which Python path are you trying to find?
A shell lookup answers which command your terminal can start. Inside a running Python process, sys.executable reports the executable path.
An environment manager or integrated development environment (IDE) may choose a runtime separately from the shell, so check the environment that launches your program.
Homebrew documents its prefixes. Other installers can place Python in different directories.
The executable path names a file. An installation prefix is a directory, so the two values answer different questions.
| Question | Check | What it tells you |
|---|---|---|
| Which executable runs this Python process? | sys.executable | The interpreter path for the current process |
| Which command can this shell start? | Windows or Unix-like shell lookup | One or more shell-resolved candidates |
| Which environment is active? | sys.prefix and sys.base_prefix | The active environment prefix and base prefix |
| Where are Python libraries installed? | python3 -m site | The site directories used by that interpreter |
Start from the environment that runs your code
Run the check from the same terminal or environment that starts your program. A separate terminal can resolve a different Python command.
- Open the terminal or IDE environment used to launch the program.
- If you use a virtual environment or Conda environment, activate or select it first.
- Use the command name your program uses, such as python on Windows or python3 in a macOS or Linux shell.
An IDE may select its interpreter in project settings, so a check in its integrated console is more useful than a lookup in an unrelated shell.
The shell resolves names such as python and python3 through PATH. This environment variable tells the shell which directories to search, and activating an environment can change the result.
Print the executable Python is running
Use the same Python command that runs your script. In Windows Command Prompt or PowerShell, use python.
python -c "import sys; print(sys.executable)"
In a macOS or Linux shell, use python3 to ask the running process for its executable path.
python3 -c 'import sys; print(sys.executable)'
Use the printed path when a tool asks you to select the same Python runtime. Python’s sys documentation describes sys.executable as the executable for the running interpreter.
Find commands your shell can start
The prompt’s command lookup and a running process can refer to different interpreters, so use the check that matches your task.
Windows Command Prompt and PowerShell
In Command Prompt, use the Windows where utility to search the current directory and PATH for matching command files.
where.exe searches the current directory and PATH. Its output lists matching files from those search locations.
In PowerShell, Get-Command can list every command named python and show its command type and source. Check the type before treating a result as an executable file.
Get-Command python -All | Select-Object CommandType, Name, Source
Microsoft documents where.exe as searching the current directory and PATH for matching files. PowerShell’s Get-Command reference covers aliases and functions, along with scripts and applications, so its output can include more than executable files.
Check CommandType before using Source as an executable path, because Alias and Function entries describe PowerShell commands.
macOS and Linux shells
In Bash or Zsh, type -a lists matching command names. The Portable Operating System Interface (POSIX) specifies that command -v reports how the shell interprets one name.
type -a python3
command -v python3
- Several results mean the shell can see several matches. Their order helps explain which command the shell selects.
- A shell result describes that shell’s command lookup. Use sys.executable inside the program to identify its running interpreter.

Homebrew documents its default prefixes for Apple Silicon and Intel Macs. Other Python distributions can use different directories.
Separate a virtual environment from base Python
A virtual environment has its own Python executable and installation prefix. The Python venv documentation describes sys.prefix as the active environment prefix and sys.base_prefix as the base installation prefix.
import sys
print("executable:", sys.executable)
print("prefix:", sys.prefix)
print("base prefix:", sys.base_prefix)
print("inside a virtual environment:", sys.prefix != sys.base_prefix)
When the last line prints True, the interpreter is inside a virtual environment. Outside one, sys.prefix and sys.base_prefix normally match.
sys.prefix is the active environment root, and its executable can be under bin on macOS or Linux or under Scripts on Windows.
sys.base_prefix is the base installation root, and sys.executable is the active process’s executable.
Conda also selects Python per environment. The AskPython Anaconda tutorial explains how its environments organize an interpreter and packages.
When command lookup returns nothing
The result describes the shell’s search locations. An IDE or a full-path launch can still start an interpreter outside those locations.
| Situation | Next check |
|---|---|
| Python starts from an IDE, but shell lookup is empty | Run sys.executable inside the IDE’s Python console |
| Python will not start from the shell | Check which interpreter the IDE or launcher is configured to use |
| You need package directories | Run python3 -m site with the interpreter in question |
Use the running interpreter as your final check
Use sys.executable to identify the interpreter running the process, and run the site module with that same interpreter to inspect its library directories.
In Windows Command Prompt or PowerShell, use python. In a macOS or Linux shell, use python3.
The Python site reference describes the directories printed by this command.
python -m site
python3 -m site
Frequently asked questions
Does sys.executable show the virtual environment’s Python?
When Python runs inside a virtual environment, sys.executable points to that environment’s interpreter. sys.base_prefix identifies the base installation prefix.
Is where.exe python the same as sys.executable?
where.exe searches the current directory and PATH for matching files. sys.executable reports the executable running the current Python process.
How do I find where Python installs packages?
Run the site module through the interpreter used by your program. On Windows use python -m site, and on macOS or Linux use python3 -m site.

