goh
goh

Reputation: 29511

python location on mac osx

I'm a little confused with the python on osx. I do not know if the previous owner of the laptop has installed macpython using macport. And I remembered that osx has an builtin version of python. I tried using type -a python and the result returned

python is /usr/bin/python
python is /usr/local/bin/python

However running both python at these locations give me [GCC 4.2.1 (Apple Inc. build 5646)] on darwin. Do they both refer to the same builtin python mac provided?

I also read that installing macpython one would

     A MacPython 2.5 folder in your Applications folder. In here you
 find IDLE, the development environment that is a standard part of
 official Python distributions...

I looked at Applications, and theres a MacPort folder with python2.6 and the mentioned stuff in it. But running IDLE, i find the same message as above.

Hmm I'm a little confused. Which is which?

Upvotes: 164

Views: 696107

Answers (12)

Muhammad Yasirroni
Muhammad Yasirroni

Reputation: 2137

In my case:

which python3: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3
which python3.7: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
which python3.12: /opt/homebrew/bin/python3.12

To change the default python3 command to use Python 3.12 instead of Python 3.7

  1. Create symbolic link

    sudo ln -s /opt/homebrew/bin/python3.12 /usr/local/bin/python3
    
  2. Open the shell configuration file:

    nano ~/.zshrc
    

    Add the following line at the end of the file to set the path for Python 3.12:

    export PATH="/opt/homebrew/bin:$PATH"
    
  3. Source the updated configuration file to apply the changes immediately:

    source ~/.zshrc
    
  4. Check:

    which python3
    python3 --version
    which python3.7
    which python3.12
    

Upvotes: 0

Kohn1001
Kohn1001

Reputation: 3901

This one will solve all your problems not only on Mac but to find it on Linux also ( & every basic shell).

TL;DR (you don't have to go through all the answer - just the 1st half).
LET'S GO

Run in terminal:

which python3

On Mac you should get:

/usr/local/bin/python3

WAIT!!! It's prob a symbolic link, how do you know? Run:

ls -al /usr/local/bin/python3 

and you'll get (if you've installed Python w/ Brew):

/usr/local/bin/python3 -> /usr/local/Cellar/python/3.6.4_4/bin/python3

which means that your

/usr/local/bin/python3 

is actually pointing to (the real location)

/usr/local/Cellar/python/3.6.4_4/bin/python3

That's it!

Longer version (optional): If for some reason, your

/usr/local/bin/python3 

is not pointing to the place you want, which is in our case:

/usr/local/Cellar/python/3.6.4_4/bin/python3

just back it up (+cool trick to add .orig suffix to file):

cp /usr/local/bin/python3{,.orig} 

and run:

rm -rf /usr/local/bin/python3

now create a new symbolic link:

ln -s /usr/local/Cellar/python/3.6.4_4/bin/python3 /usr/local/bin/python3 

and now your

/usr/local/bin/python3

is pointing to

/usr/local/Cellar/python/3.6.4_4/bin/python3 

Check it out by running:

ls -al /usr/local/bin/python3

Upvotes: 153

hanumanDev
hanumanDev

Reputation: 6614

run the following code in a .py file:

import sys

print(sys.version)
print(sys.executable)

Upvotes: 2

which python3 simply result in a path in which the interpreter settles down.

Upvotes: 1

MaPY
MaPY

Reputation: 351

Run this in your interactive terminal

import os
os.path

It will give you the folder where python is installed

Upvotes: 4

Yongzhi.C
Yongzhi.C

Reputation: 161

I checked a few similar discussions and found out the best way to locate all python2/python3 builds is:

which -a python python3

Upvotes: 10

Daniel Nuriyev
Daniel Nuriyev

Reputation: 643

On High Sierra

which python

shows the default python but if you downloaded and installed the latest version from python.org you can find it by:

which python3.6

which on my machine shows

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

Upvotes: 8

Georgy Gobozov
Georgy Gobozov

Reputation: 13721

installed with 'brew install python3', found it here enter image description here

Upvotes: 5

Gavin
Gavin

Reputation: 1092

I found the easiest way to locate it, you can use

which python

it will show something like this:

/usr/bin/python

Upvotes: 94

cutsoy
cutsoy

Reputation: 10251

On Mac OS X, it's in the Python framework in /System/Library/Frameworks/Python.framework/Resources.

Full path is:

/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

Btw it's easy to find out where you can find a specific binary: which Python will show you the path of your Python binary (which is probably the same as I posted above).

Upvotes: 64

Ned Deily
Ned Deily

Reputation: 85035

[GCC 4.2.1 (Apple Inc. build 5646)] is the version of GCC that the Python(s) were built with, not the version of Python itself. That information should be on the previous line. For example:

# Apple-supplied Python 2.6 in OS X 10.6
$ /usr/bin/python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

# python.org Python 2.7.2 (also built with newer gcc)
$ /usr/local/bin/python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Items in /usr/bin should always be or link to files supplied by Apple in OS X, unless someone has been ill-advisedly changing things there. To see exactly where the /usr/local/bin/python is linked to:

$ ls -l /usr/local/bin/python
lrwxr-xr-x  1 root  wheel  68 Jul  5 10:05 /usr/local/bin/python@ -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

In this case, that is typical for a python.org installed Python instance or it could be one built from source.

Upvotes: 78

Hassek
Hassek

Reputation: 8995

I have a cook recipe for finding things in linux/macos

First update the locate db then do a

locate WHATiWANTtoSEARCH | less

do a /find to find what you are looking for.

to update your locate db in macos do this:

sudo /usr/libexec/locate.updatedb

it sometimes takes a while. Hope this helps :)

Upvotes: 0

Related Questions