Monday, November 15, 2021

[SOLVED] Alias not updating Python Binary

Issue

Below is some necessary context for understanding my questions (my shell is /bin/bash by the way):

~
$ alias
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
alias ll='ls -al'
alias pip='pip3'
alias python='/usr/local/bin/python3'
~
$ which python
/usr/bin/python
~
$ which python3
/usr/local/bin/python3
~
$ python3 --version
Python 3.9.5
~
$ python --version
Python 3.9.5
~
$ ll /usr/bin/python*
lrwxr-xr-x  1 root  wheel     75 Feb  1  2020 /usr/bin/python -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x  1 root  wheel     82 Feb  1  2020 /usr/bin/python-config -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
lrwxr-xr-x  1 root  wheel     75 Feb  1  2020 /usr/bin/python2 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x  1 root  wheel     75 Feb  1  2020 /usr/bin/python2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x  1 root  wheel     82 Feb  1  2020 /usr/bin/python2.7-config -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
-rwxr-xr-x  1 root  wheel  31488 Oct 30  2020 /usr/bin/python3
lrwxr-xr-x  1 root  wheel     76 Feb  1  2020 /usr/bin/pythonw -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7
lrwxr-xr-x  1 root  wheel     76 Feb  1  2020 /usr/bin/pythonw2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7
~
$ ll /usr/local/bin/python*
lrwxr-xr-x  1 marshallmcquillen  admin  38 May 18 06:14 /usr/local/bin/python3 -> ../Cellar/[email protected]/3.9.5/bin/python3
lrwxr-xr-x  1 marshallmcquillen  admin  45 May 18 06:14 /usr/local/bin/python3-config -> ../Cellar/[email protected]/3.9.5/bin/python3-config
lrwxr-xr-x  1 marshallmcquillen  admin  40 May 18 06:14 /usr/local/bin/python3.9 -> ../Cellar/[email protected]/3.9.5/bin/python3.9
lrwxr-xr-x  1 marshallmcquillen  admin  47 May 18 06:14 /usr/local/bin/python3.9-config -> ../Cellar/[email protected]/3.9.5/bin/python3.9-config

My Questions:

  1. Why is my alias for python not working? (I've also tried just having alias python=python3 in my ~/.bash_profile and it still doesn't point to the correct binary)

  2. Why does the python link point to (what appears to be) a python2.7 binary, but the version shows 3.9.5?

  3. Is the answer to #1 or #2 somehow related to the difference between brew install and pip3 install?


Solution

You are using the wrong command:

which P

by definition searches for an executable named P in the PATH.

To see how a command is actually interpreted by bash, you could do a

type P

in your case:

type python

BTW, it can become confusing to give an alias the same name as an executable in your PATH. Since the purpose of an alias is to simplify typing on the command line, I suggest that you name your alias to Python something short, like py.



Answered By - user1934428