DEV Community

Serhat Teker
Serhat Teker

Posted on • Originally published at tech.serhatteker.com on

How to Update Python How to Upgrade to Python 3.7 on Ubuntu 18.04/18.10

Dev.to version of this article may not be the up-to-date one. You can visit originally published resource: tech.serhatteker.com to see the most recent version.


Disclaimer

WARNING
Edited: 2020-12-28 16:53:45 UTC

Instead of using below method please consider adding a new/multi python version on your system. According the python version you want, look at one of the articles below:

Since below method may cause system error: probably break apt or misconfiguration of the system.

Intro

In this article, we upgrade to python 3.7 from python 3.6 and configure it as the default version of python.

I was just trying to upgrade my python and I find it a little bit hard to do. Python 3.6 is the default version that comes with Ubuntu 18.04/18.10 But the latest version is Python 3.8. So it would be better to upgrade one major version.

So lets start:

Step 0: Check the current python version

Run below command to test the current version installed of python.

$ python3 --version
Enter fullscreen mode Exit fullscreen mode

Output will be like:

python 3.6.8
Enter fullscreen mode Exit fullscreen mode

Step 1: Install python3.7

Install python by typing:

$ sudo apt update -y
$ sudo apt install python3.7
Enter fullscreen mode Exit fullscreen mode

Step 2: Add python 3.6 & python 3.7 to update-alternatives

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
Enter fullscreen mode Exit fullscreen mode

Step 3: Update python 3 to point to python 3.7

By default, Python 3.6 is pointed to Python 3. That means when we run python3 it will execute as python3.6 binary but we want to execute this as python3.7.

Type this command to configure python3:

$ sudo update-alternatives --config python3
Enter fullscreen mode Exit fullscreen mode
user@ubuntu1804:~$ sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.6   2         auto mode
  1            /usr/bin/python3.6   1         manual mode
  2            /usr/bin/python3.7   2         manual mode

Press <enter> to keep the current choice[*], or type selection number:
Enter fullscreen mode Exit fullscreen mode

You should get the above output. Now type 2 and hit enter for Python 3.7. Remember the selection number may differ so choose the selection number which is for Python 3.7.

Alternative update python 3 to point to python3.7

/usr/bin/python3 is just a symlink. Delete it and make a new symlink to
python3.7:

$ sudo rm /usr/bin/python3
$ sudo ln -s python3.7 /usr/bin/python3
Enter fullscreen mode Exit fullscreen mode

Step 4: Test the new version of python3

$ python3 -V
Enter fullscreen mode Exit fullscreen mode

All done!


Changelog

  • 2020-03-10 : Add disclaimer and warning
  • 2020-12-28 : Add newer alternative python versions

Top comments (20)

Collapse
 
scottanderson42 profile image
scottanderson42

This breaks apt-get upgrade (and other things) because Ubuntu 18.04 wants Python 3.6 to be the system python. Have you come across this problem?

Collapse
 
serhatteker profile image
Serhat Teker

Sorry to hear that. This was an outdated version of this article. I updated this one as well now.

Also as I mentioned now in the beginning of article you can follow up-to-date version of this article on: tech.serhatteker.com.

Collapse
 
abdvkh profile image
Abubakr Abduvakhidov

yes, how did you solve, could you share because i have problems with apt_

Collapse
 
scottanderson42 profile image
scottanderson42

I upgraded to Ubuntu 20.04. :-P

Collapse
 
begundal_the profile image
slitherin

update-alternatives --set python3 /usr/bin/python3.6

Collapse
 
chbrandt profile image
Carlos H Brandt

You forgot a second step -- maybe related to some crashes from some comments.
Notice that you have python*-config files in there too:

$ ls -lh /usr/bin/python*
lrwxrwxrwx 1 root root    9 Apr 16  2018 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root    9 Apr 16  2018 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3.5M Feb 27 16:10 /usr/bin/python2.7
lrwxrwxrwx 1 root root    9 May 28  2019 /usr/bin/python3 -> python3.6
-rwxr-xr-x 2 root root 4.4M Jan 26 16:33 /usr/bin/python3.6
lrwxrwxrwx 1 root root   33 Jan 26 16:33 /usr/bin/python3.6-config -> x86_64-linux-gnu-python3.6-config
-rwxr-xr-x 2 root root 4.4M Jan 26 16:33 /usr/bin/python3.6m
lrwxrwxrwx 1 root root   34 Jan 26 16:33 /usr/bin/python3.6m-config -> x86_64-linux-gnu-python3.6m-config
-rwxr-xr-x 1 root root 5.0M Feb 25 23:10 /usr/bin/python3.8
lrwxrwxrwx 1 root root   33 Feb 25 23:10 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root   16 Oct 25  2018 /usr/bin/python3-config -> python3.6-config
Enter fullscreen mode Exit fullscreen mode

. AFAIU one should also apply a switch to python3-config.

In Step-2, I would recommend also doing:

$ sudo update-alternatives --install /usr/bin/python3-config python3-config /usr/bin/python3.6-config 1
$ sudo update-alternatives --install /usr/bin/python3-config python3-config /usr/bin/python3.8-config 2
Enter fullscreen mode Exit fullscreen mode

, and set accordingly (as explained in the article), but now for python3-config:

$ sudo update-alternatives --config python3-config
Enter fullscreen mode Exit fullscreen mode

Hope that is right and to complement the nice article.
/.\

Collapse
 
yell0wturtle profile image
yell0wturtle

Clean, easy, 5/5.

Collapse
 
serhatteker profile image
Serhat Teker

Thank you.

Collapse
 
sirenaalycewd profile image
Sirena Alyce Web Design

this was a HUGE help...thank you!

Collapse
 
serhatteker profile image
Serhat Teker

Thanks!

Collapse
 
peter279k profile image
peter279k

Thanks. It's clear and useful :).

Collapse
 
rezach_10 profile image
Anthony Shayesteh

Life Saver 5/5

Collapse
 
voon_leo profile image
Leo Voon

Thank you 😄

Collapse
 
wdrfree profile image
wdrfree

Not work for me!!!

Collapse
 
spiritupbro profile image
spiritupbro

thanks man

Collapse
 
rogerioisj profile image
Rogerio Inacio

Nice! thxs