482

I want to find out my Python installation path on Windows. For example:

C:\Python25

How can I find where Python is installed?

1
  • 1
    You should give more information. You know that Python is installed, but can you run Python or not? In my case, I didn't install it; various products may have installed it and I want to find out if it exists somewhere in the file system. Would the interpreter be called python.exe? I have no idea. Commented Nov 30, 2019 at 2:25

26 Answers 26

861

In your Python interpreter, type the following commands:

>>> import os, sys
>>> os.path.dirname(sys.executable)
'C:\\Python25'

Also, you can club all these and use a single line command. Open cmd and enter following command

python -c "import os, sys; print(os.path.dirname(sys.executable))"
Sign up to request clarification or add additional context in comments.

14 Comments

What if you're inside a virtualenv? This won't work then.
@user60561 It should give you the path to the Virtualenv's Python executable. I don't know a way to get the OS python, in that case, but I'd be interested to know why you'd need that, if you were running from within a Virtualenv?
My script creates a virtualenv, so it uses the system python to do that. You've gotten me thinking though, maybe that's not necessary… I'll check it out on Monday, thank you!
Error: "C:\WINDOWS\system32>import os 'import' is not recognized as an internal or external command, operable program or batch file."
@David Spector: My bad. I should have noted that you have to type those commands in the Python interpreter, I'll update the answer :-)
|
278

If you have Python in your environment variable then you can use the following command in cmd or powershell:

 where python

or for Unix enviroment

 which python

command line image :

enter image description here

4 Comments

@jdev works on windows, mac and linux. Environment variable should be there is already mentioned in answer.
windows where returns more than one python, in order of appearance. And it does not work if you get more than one to chain a command the is expected to return only one.
I have my python in my environment Path. However there is nothing shown when I hit enter and the terminal just goes to the next line with the cursor ready for input.
This does not work on Windows 11 with Anaconda. "Where python" will point to a stub that opens the Windows Store, and not show Python from Anaconda. It is so annoying, but typically Microsoft, I guess
121

It would be either of

  • C:\Python36
  • C:\Users\(Your logged in User)\AppData\Local\Programs\Python\Python36

7 Comments

my path of python 3.6 on win10: C:\Users\YANG.LEI\AppData\Local\Programs\Python\Python36-32
The Python path can be customized freely during the installation. I had several machines that didn't even have a c:\ drive. Also, the local application data isn't necessarily under C:\Users.
This is not correct and it can be installed anywhere. elo80ka's answer is the one to use!
This worked for me. If you don't know where the python interpreter is and it's not in the path, how can you follow the instructions from @Hossein???
@ScottSiddall so you are saying, you know Python is installed on your machine, but its not in PATH, you need to find it somehow! there are many ways, one would be to use the good old search in windows, or use Everything! or open up regedit and search for python. you'll find what you were looking for.
|
56

If you need to know the installed path under Windows without starting the python interpreter, have a look in the Windows registry.

Each installed Python version will have a registry key in either:

  • HKLM\SOFTWARE\Python\PythonCore\versionnumber\InstallPath
  • HKCU\SOFTWARE\Python\PythonCore\versionnumber\InstallPath

In 64-bit Windows, it will be under the Wow6432Node key:

  • HKLM\SOFTWARE\Wow6432Node\Python\PythonCore\versionnumber\InstallPath

8 Comments

this seems to be false on windows 7, at least for python 2.7
In 64-bit versions of windows (which you are probably using) it will be under the Wow6432Node key, IE HKLM\SOFTWARE\Wow6432Node\Python\PythonCore\versionnumber\InstallPath
It's a nice way but to use it one needs to know the current python version. I'm still looking for a good way to detect the python path for use with nsis installer.
It's under Wow6432Node if it's 32-bit python on 64-bit windows. Note also that a 32-bit app cannot normally detect the 64-bit (non-Wow6432Node) keys in the registry because of registry redirection (which means 64-bit python install wouldn't be detected by a 32-bit app).
Arrgghh. I wasn't paying attention on install and they put it off the root. Why is it so hard to get with the program and put it in the correct hierarchy?
|
46

If you have the py command installed, which you likely do, then just use the --list-paths/-0p argument to the command:

py --list-paths

Example output:

Installed Pythons found by py Launcher for Windows
-3.8-32 C:\Users\cscott\AppData\Local\Programs\Python\Python38-32\python.exe *
-2.7-64 C:\Python27\python.exe

The * indicates the currently active version for scripts executed using the py command.

1 Comment

Shorthand: py -0p
41

Simple way is

  1. open CMD
  2. type where python in cmd

3 Comments

what if we are in ubuntu?
Please try below. I dont have ubuntu installed in my system but try below "type -a python"
@MilanKumarBura which python
26

On my windows installation, I get these results:

>>> import sys
>>> sys.executable
'C:\\Python26\\python.exe'
>>> sys.platform
'win32'
>>>

(You can also look in sys.path for reasonable locations.)

2 Comments

but how can we do the same using batch file ?
@Patrick I think python -c "import sys; print(sys.executable)" will work
17

Its generally

'C:\Users\user-name\AppData\Local\Programs\Python\Python-version'

or try using (in cmd )

where python

Comments

17

In the sys package, you can find a lot of useful information about your installation:

import sys
print(sys.executable)
print(sys.exec_prefix)

I'm not sure what this will give on your Windows system, but on my Mac executable points to the Python binary and exec_prefix to the installation root.

You could also try this for inspecting your sys module:

import sys
for k,v in sys.__dict__.items():
    if not callable(v):
        print "%20s: %s" % (k,repr(v))

2 Comments

@GuoH can we do the same using batch file ?
You could do something like python -c "import sys; print sys.executable"
10

If You want the Path After successful installation then first open you CMD and type python or python -i

It Will Open interactive shell for You and Then type

import sys

sys.executable

Hit enter and you will get path where your python is installed ...

1 Comment

The problem I had with this solution is that I was running python 2.7 and wanted to upgrade to 3.6. I installed 3.6 but when I type python on the command line I was running from the old 2.7 still.
9

Make use of the Python Launcher for Windows (available as of 3.3). It is compatible with all available versions of python.

First, check if the launcher is available:

py 

starts the latest installed version of Python

To see all Python versions available on your system and their path:

py -0p

or

py --list-paths

For a specific Python version path—especially useful with multiple python installations:

py -3.7 -c "import os, sys; print(os.path.dirname(sys.executable))"

python 2

py -2 -c "import os, sys; print(os.path.dirname(sys.executable))"

py installed location is C:\Windows\py.exe if installed for all users, otherwise can be found at C:\Users\username\AppData\Local\Programs\Python\Launcher. It does not require the environment PATH variable to be set if installed for all users.

Comments

8

To know where Python is installed you can execute where python in your cmd.exe.

4 Comments

(This post does not seem to provide an answer to the question. Please either edit your answer, or just post it as a comment to the question).
@sɐunıɔןɐqɐp It actually is an answer and it might even be correct. I'm not very familiar with Windows, but there in fact seems to be a where command which is supposed to be similar to which on Unixes.
@anothernode: The answer's quality is very bad. In case you understand what the author is trying to say, you are free to edit and fix it.
the answer's quality is not bad, the question's quality is. I can confirm where python works on cmd.exe
6

You can search for the "environmental variable for you account". If you have added the Python in the path, it'll show as "path" in your environmental variable account.

but almost always you will find it in "C:\Users\%User_name%\AppData\Local\Programs\Python\Python_version"

the 'AppData' folder may be hidden, make it visible from the view section of toolbar.

Comments

4

You can find it in the Windows GUI, but you need to select “show hidden” in the menu. Directory where python is installed on my Win10 computer:

C:\Users\username\AppData\Local\Programs\Python\Python310

Very handy if you use python pip to install packages.

1 Comment

I will note that for those that are trying to do a "Get-Command python" or a "where python" you might well get something like "C:\Users\username\AppData\Local\Microsoft\WindowsApps\python.exe" which seems to be some sort of link, but not one that gci will give up the target of. Which is frustrating for what should be obvious reasons.
3

If anyone needs to do this in C# I'm using the following code:

static string GetPythonExecutablePath(int major = 3)
{
    var software = "SOFTWARE";
    var key = Registry.CurrentUser.OpenSubKey(software);
    if (key == null)
        key = Registry.LocalMachine.OpenSubKey(software);
    if (key == null)
        return null;

    var pythonCoreKey = key.OpenSubKey(@"Python\PythonCore");
    if (pythonCoreKey == null)
        pythonCoreKey = key.OpenSubKey(@"Wow6432Node\Python\PythonCore");
    if (pythonCoreKey == null)
        return null;

    var pythonVersionRegex = new Regex("^" + major + @"\.(\d+)-(\d+)$");
    var targetVersion = pythonCoreKey.GetSubKeyNames().
                                        Select(n => pythonVersionRegex.Match(n)).
                                        Where(m => m.Success).
                                        OrderByDescending(m => int.Parse(m.Groups[1].Value)).
                                        ThenByDescending(m => int.Parse(m.Groups[2].Value)).
                                        Select(m => m.Groups[0].Value).First();

    var installPathKey = pythonCoreKey.OpenSubKey(targetVersion + @"\InstallPath");
    if (installPathKey == null)
        return null;

    return (string)installPathKey.GetValue("ExecutablePath");
}

2 Comments

Wouldn't HKCU and HKLM both exist for most users? This would seem to miss globally-installed python instances.
Yes seems i created a bug there.
3

To run the WHERE command from PowerShell it is necessary to specify the .exe extension: 'WHERE.exe' otherwise the Where-Object cmdlet will take precedence.

1 Comment

It simply works and with an explaination. Thumbs up
2

Go to C:\Users\USER\AppData\Local\Programs\Python\Python36 if it is not there then open console by windows+^R Then type cmd and hit enter type python if installed in your local file it will show you its version from there type the following import os import sys os.path.dirname(sys.executable)

Comments

2

You could have many versions of Python installed on your machine. So if you're in Windows at a command prompt, entering something like this...

py --version

...should tell you what version you're using at the moment. (Maybe replace py with python or python3 if py doesn't work). Anyway you'd see something like

Python 3.10.2

If you then create a virtual environment using something like this...

py -m venv venv

...that environment will also use that Python version. To verify, activate the environment...

venv\scripts\activate.bat 

You'll see the name of the command prompt. Now if execute:

where python

...it will show you which Python executable that virtual environment uses. It will be a copy of Python.exe what's actually in the Scripts subfolder of the virtual environment folder. Of course to see which version that is, again use py --version.

Comments

1

This worked for me: C:\Users\Your_user_name\AppData\Local\Programs\Python

My currently installed python version is 3.7.0

Hope this helps!

Comments

1

In PowerShell, where python did no produce a results because my installation did not add its path to Path, the environment variable. (Get-Command python).Path worked

Comments

1

Win11 and python3.12:
C:\Users\{username}\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_****\LocalCache\local-packages\Python312

Comments

0

if you still stuck or you get this

C:\\\Users\\\name of your\\\AppData\\\Local\\\Programs\\\Python\\\Python36

simply do this replace 2 \ with one

C:\Users\akshay\AppData\Local\Programs\Python\Python36

Comments

0

I installed 2 and 3 and had the same problem finding 3. Fortunately, typing path at the windows path let me find where I had installed it. The path was an option when I installed Python which I just forgot. If you didn't select setting the path when you installed Python 3 that probably won't work - unless you manually updated the path when you installed it. In my case it was at c:\Program Files\Python37\python.exe

Comments

0

If you use anaconda navigator on windows, you can go too enviornments and scroll over the enviornments, the root enviorment will indicate where it is installed. It can help if you want to use this enviorment when you need to connect this to other applications, where you want to integrate some python code.

Comments

0

Option 1 : Check System Environment Variables > Path

Option 2 : C:\Users\Asus\AppData\Local\Programs\Python (By default Path)

Comments

0

On my Windows 11, I have two Python installed: 3.11.2 and 3.8. The below commends give only one of them.

Which python

which py

To find out the location of both the below Powershell commands come in handy:

$User = New-Object System.Security.Principal.NTAccount($env:UserName)

$sid = $User.Translate([System.Security.Principal.SecurityIdentifier]).value

New-PSDrive HKU Registry HKEY_USERS

Get-ChildItem "HKU:\${sid}\Software\Python\PythonCore\*\InstallPath"

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.