Changing python version without breaking software center

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?

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

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.

Solution 2

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

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply