mahmood
mahmood

Reputation: 24705

Changing default python to another version

Currently when I use "python" command, it points to python2.6. I have installed python3.1 and I want the "python" command point to python3.1. How it is possible?

mahmood@mpc:~$ which python 
/usr/bin/python
mahmood@mpc:~$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 2010-11-24 16:14 /usr/bin/python -> python2.6
mahmood@mpc:~$ uname -a
Linux orca 2.6.32-24-server #39-Ubuntu SMP Wed Jul 28 06:21:40 UTC 2010 x86_64 GNU/Linux

Upvotes: 8

Views: 55237

Answers (6)

Eric O. Lebigot
Eric O. Lebigot

Reputation: 94475

Since you have Linux, and if you want to simply type "python" instead of "python3" in order to run Python programs, a solution is simply to define an alias in you shell configuration file (.bashrc, etc.). For Bourne shells, it should be something like

alias python=python3

(or whatever your Python 3 name is).

This way, you do not have to change anything on your system, so this solution should quite innocuous and it should not break your system.

Upvotes: 16

jfs
jfs

Reputation: 414179

It is not advisable.

You could write at the top in your own script (a shebang):

#!/usr/bin/env python3

If you're on Windows then install pylauncher. It understands #!.

On Linux to make your script executable, run once:

$ chmod +x your-script

After that, to run your script:

$ ./your-script

For interactive use you could create virtualenv as @Petr Viktorin points out. To install/upgrade (versions from Ubuntu's repositries are too old):

$ pip install -U virtualenv{,wrapper}

Follow instructions in /path/to/virtualenvwrapper.sh, to create virtualenv that uses python3:

$ mkvirtualenv --python python3 py3

To activate virtualenv:

$ workon py3

In an active virtualenv python refers to /path/virtualenv/bin/python. So you could run:

$ python your_module.py

Upvotes: 4

tMC
tMC

Reputation: 19325

unlink /usr/bin/python
ln -s /usr/bin/python3.1 /usr/bin/python

Upvotes: 7

fearmint
fearmint

Reputation: 5334

On Linux/Mac OS you can use python3 instead of python.

Upvotes: 2

ᅠᅠᅠ
ᅠᅠᅠ

Reputation: 66940

You really don't want to change what python points to, because some programs might expect Python 2, and break.

The solution is to use virtualenv: create an isolated Python 3 environment (with the -p python3 option), activate it, and you're good to go.

Upvotes: 10

mikabytes
mikabytes

Reputation: 2169

You could follow this procedure:

sudo rm /usr/bin/python

sudo ln -s /usr/bin/python3.1 /usr/bin/python

But as already stated by Petr Viktorin, any programs that would expect python v2 would stop to work. So use with caution. You can undo the change by running:

sudo rm /usr/bin/python

sudo ln -s /usr/bin/python2.6 /usr/bin/python

Upvotes: 3

Related Questions