How to set Python3.5.2 as default Python version on CentOS?

Viewed 131981

Is there a way to set the Python 3.5.2 as the default Python version on CentOS 7? currently, I have Python 2.7 installed as default and Python 3.5.2 installed separately.

I used the following commands

mv /usr/bin/python /usr/bin/python-old
sudo ln -fs /usr/bin/python3 /usr/bin/python

but after that yum gives the error.

-bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory

is there something I'm missing here?

NOTE: its the similar but opposite question of Linux CentOS 7, how to set Python2.7 as default Python version?

5 Answers

Option 1) Creating a soft link actually has a drawback. "yum" does not support Python3. so, if you still decide to go with symlink creation then you also need to update the /usr/bin/yum

ln -s /usr/bin/python3 /usr/bin/python

And update the shebang line with #!/usr/bin/python2 in /usr/bin/yum file

Option 2) use alternatives

alternatives --install /usr/bin/python python /usr/bin/python3.x 60
alternatives --config python 

Option 3) create an alias in bash_profile

alias python="/usr/bin/python3"

As the question goes, Linux CentOS 7, how to set Python3.5.2 as default Python version?

Will like to complement @OldFart's answer( Unforunately, can't comment else I would have).

when using the install param with update-alternatives, you can set the priority in auto mode. Implicitly saying that the alternative with the highest priority will be the default alternative should no alternative have been set manually. using the above answer as an example,

update-alternatives --install /usr/bin/python python /usr/bin/python2 50

will set the python2 alternative with a priority of 50, and

update-alternatives --install /usr/bin/python python /usr/bin/python3.5 60

will set the python3.5 alternative with a priority of 60. and by default, the python 3.5 becomes the default python executable for the python command.

should you want to change your default python alternative,

update-alternatives --config python

Find this a better approach as i don't have to modify my path files.

I want to provide some additional context around why yum was broken in the OP, and why I think the alternatives method is the best approach. Perhaps there are other best practices, but I've made some discoveries and would like to share my findings.

Assuming 3.5.2 was:

  1. installed separately (as suggested by OP) similar to the steps: Python Installation Procedure From Source
  2. the --prefix option for ./configure was updated from the default --prefix = /usr/local/bin to --prefix = /usr/bin/python3

The command to link 'separately installed 3.5.2' at the location /usr/bin/python3 to system python at /usr/bin/python overwrote or otherwise modified system python, breaking yum.

This approach complements @OldFart 's answer and hopefully provides some additional perspective around root cause of why a separately installed python can cause issues.

update-alternatives was a breath of fresh air for a similar problem I ran into

Related