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.
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:
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.
Don’t do that:
- The Python programs that come with Ubuntu depend on
/usr/bin/pythonbeing the default Python2 version of your distro. They will likely break if it is something else.
- PEP-0394 recommends that the
pythoncommand calls Python2. Most Python programs will break if it calls Python3 instead.
/usr/bin/python3 if you want to use Python3
Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂