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 UTCInstead 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
Output will be like:
python 3.6.8
Step 1: Install python3.7
Install python by typing:
$ sudo apt update -y
$ sudo apt install python3.7
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
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
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:
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
Step 4: Test the new version of python3
$ python3 -V
All done!
Changelog
- 2020-03-10 : Add disclaimer and warning
- 2020-12-28 : Add newer alternative python versions
Top comments (22)
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?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.
yes, how did you solve, could you share because i have problems with apt_
I upgraded to Ubuntu 20.04. :-P
update-alternatives --set python3 /usr/bin/python3.6
You forgot a second step -- maybe related to some crashes from some comments.
Notice that you have
python*-config
files in there too:. AFAIU one should also apply a switch to
python3-config
.In Step-2, I would recommend also doing:
, and set accordingly (as explained in the article), but now for
python3-config
:Hope that is right and to complement the nice article.
/.\
Making the Right Choice. Locksmiths provide invaluable services, from emergency lockouts to comprehensive security solutions locksmithcal.com. Planning ahead and using trusted comparison tools can help you handle lockout situations efficiently, minimize stress, and avoid being overcharged.
Thank you 😄
Thanks. It's clear and useful :).
this was a HUGE help...thank you!
Thanks!
Life Saver 5/5
Clean, easy, 5/5.
Thank you.
It works! Thanks!
This works, however, after I close the terminal, I can't open it again.
To get it back I have to do:
sudo ln -sf /usr/bin/python3.6 /usr/bin/python3
in the xterm terminal.
Thank you!