I have been fiddling with my Python installation on Ubuntu 12.04 (I was having trouble installing a python library), and at one point my python command wasn't working. It turned out the symlink was missing (I must have removed it by accident lol), so I made a new one pointing to Python 3.2 (originally pointed to 2.7):

sudo rm /usr/bin/python
sudo ln -s /usr/bin/python3.2 /usr/bin/python

Problem: the software center and update manager weren't working:

~$ software-center
  File "/usr/bin/software-center", line 152
    print time.time()
SyntaxError: invalid syntax

I guessed this was because I had changed the default python version (2.7->3.2), so I changed it back to 2.7. Now they work fine, but I'd still like to change the 'default' python version (i.e. the one called with python in the terminal).

Is it possible to do that in Ubuntu 12.04?


You shouldn't change the symlink for python to point to Python 3 as you have already seen its consequences. And I would recommend you to get into the habit of calling Python 3 programs with python3 as that would involve the least amount of trouble later on.

But if you insist on calling Python 3 on your Terminal using python, you may create an alias for it. Remember, alias is different than symlink. Edit ~/.bash_aliases file (create it if it doesn't exist) to add the following in it:

alias python='python3.2'

Then restart your terminal and you would be able to execute Python 3 by calling python. This wouldn't break anything as changing the symlink does.

You may even add aliases like alias py3='python3.2' and then call py3 to run Python 3. This is even shorter and less confusing.

|improve this answer|||||
  • Thank you very much! I think I'll just get used to using python3 :) – Sean Bone Jun 29 '14 at 10:58

Don't do that:

  • The Python programs that come with Ubuntu depend on /usr/bin/python being the default Python2 version of your distro. They will likely break if it is something else.
  • PEP-0394 recommends that the python command calls Python2. Most Python programs will break if it calls Python3 instead.

Instead use /usr/bin/python3 if you want to use Python3

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.