I’ve got two versions of python on my linuxbox:
$python Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. $ /usr/local/bin/python2.7 Python 2.7.3 (default, Oct 8 2013, 15:53:09) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. $ which python /usr/bin/python $ ls -al /usr/bin/python -rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python
How can I make 2.7 be the default version so when I type
python it puts me in 2.7?
You probably don’t actually want to change your default Python.
Your distro installed a standard system Python in
/usr/bin, and may have scripts that depend on this being present, and selected by
#! /usr/bin/env python. You can usually get away with running Python 2.6 scripts in 2.7, but do you want to risk it?
On top of that, monkeying with
/usr/bin can break your package manager’s ability to manage packages. And changing the order of directories in your
PATH will affect a lot of other things besides Python. (In fact, it’s more common to have
/usr/local/bin ahead of
/usr/bin, and it may be what you actually want—but if you have it the other way around, presumably there’s a good reason for that.)
But you don’t need to change your default Python to get the system to run 2.7 when you type
First, you can set up a shell alias:
Type that at a prompt, or put it in your
~/.bashrc if you want the change to be persistent, and now when you type
python it runs your chosen 2.7, but when some program on your system tries to run a script with
/usr/bin/env python it runs the standard 2.6.
Alternatively, just create a virtual environment out of your 2.7 (or separate venvs for different projects), and do your work inside the venv.
/usr/local/bin to your
PATH environment variable, earlier in the list than
Generally this is done in your shell’s rc file, e.g. for bash, you’d put this in
This will cause your shell to look first for a
/usr/local/bin, before it goes with the one in
(Of course, this means you also need to have
/usr/local/bin/python point to
python2.7 – if it doesn’t already, you’ll need to symlink it.)
Enter the command
which python //output: /usr/bin/python cd /usr/bin ls -l
Here you can see something like this
lrwxrwxrwx 1 root root 9 Mar 7 17:04 python -> python2.7
your default python2.7 is soft linked to the text ‘python’
So remove the softlink python
sudo rm -r python
then retry the above command
you can see the softlink is removed
-rwxr-xr-x 1 root root 3670448 Nov 12 20:01 python2.7
Then create a new softlink for python3.6
ln -s /usr/bin/python3.6 python
Then try the command
python in terminal
//output: Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linux
license for more information.
Verify current version of python by:
$ python --version
then check python is symbolic link to which file.
$ ll /usr/bin/python
lrwxrwxrwx 1 root root 9 Jun 16 2014 /usr/bin/python -> python2.7*
Check other available versions of python:
$ ls /usr/bin/python*
/usr/bin/python /usr/bin/python2.7-config /usr/bin/python3.4 /usr/bin/python3.4m-config /usr/bin/python3.6m /usr/bin/python3m /usr/bin/python2 /usr/bin/python2-config /usr/bin/python3.4-config /usr/bin/python3.6 /usr/bin/python3.6m-config /usr/bin/python3m-config /usr/bin/python2.7 /usr/bin/python3 /usr/bin/python3.4m /usr/bin/python3.6-config /usr/bin/python3-config /usr/bin/python-config
If want to change current version of python to 3.6 version edit file ~/.bashrc:
add below line in the end of file and save:
To install pip for python 3.6
$ sudo apt-get install python3.6 python3.6-dev $ sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python3.6 $ sudo easy_install pip
On Success, check current version of pip:
$ pip3 -V
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
All OS comes with a default version of python and it resides in /usr/bin. All scripts that come with the OS (e.g. yum) point this version of python residing in /usr/bin.
When you want to install a new version of python you do not want to break the existing scripts which may not work with new version of python.
The right way of doing this is to install the python as an alternate version.
e.g. wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 tar xf Python-2.7.3.tar.bz2 cd Python-2.7.3 ./configure --prefix=/usr/local/ make && make altinstall
Now by doing this the existing scripts like yum still work with /usr/bin/python.
and your default python version would be the one installed in /usr/local/bin.
i.e. when you type python you would get 2.7.3
This happens because. $PATH variable has /usr/local/bin before usr/bin.
If python2.7 still does not take effect as the default python version you would need to do
I guess you have installed the 2.7 version manually, while 2.6 comes from a package?
The simple answer is: uninstall python package.
The more complex one is: do not install manually in /usr/local. Build a package with 2.7 version and then upgrade.
Package handling depends on what distribution you use.