Can I change the default Python 3.6.5 on WSL Ubuntu 18.04 to 3.7? So when I check python3 --version I get 3.7.x so I can use that version with pip3 as well. Thanks
Asked
Active
Viewed 2.6k times
4
wbadry
- 260
- 1
- 3
- 12
-
Does `python3.7 --version` provide the desired output and are you just trying to avoid typing the extra .7? Have you considered virtual environments? – DaveStSomeWhere Feb 22 '19 at 22:44
-
What I try to do is installing more packages for 3.7, not 3.6 version coming with ubuntu 18.04. PIP3 is associated with 3.6.5 and don't know how to install packages on 3.7 – wbadry Feb 23 '19 at 12:37
-
Yes, multiple steps to verify. 1 - verify python3.7 is installed by checking `python3.7 --version`. 2 - do you have root privileges, can you enter `sudo` commands. 3. Find your python3 symbolic link using `which python3` (should point to python3.6). 4 - remove python3 symbolic link. 5. Add new symbolic link to python3.7. Please verify 1 and 2. – DaveStSomeWhere Feb 23 '19 at 14:55
-
Would you kindly post the Linux commands for this? – wbadry Feb 23 '19 at 22:23
-
I'll put them in an answer to format – DaveStSomeWhere Feb 24 '19 at 03:34
1 Answers
7
Here's the steps to change your python3 command to point to your python3.7 version (assuming you already have 3.7 installed). Please adjust paths as needed for your environment
# 1 - Identify your location of `python3` using the `which` command
which python3
# returns something like
/usr/local/bin/python3
# 2 - Identify your location of `python3.7` using the `which` command
which python3.7
# returns something like
/usr/local/bin/python3.7
# 3 - Get directory listing of python3 folder (from 1 above)
# using grep to filter results containing 'python'
ll /usr/local/bin | grep -i python
# returns something like below - notice the arrow after python3
# the arrow indicates a symbolic link
lrwxrwxrwx 1 root root 18 Jul 4 2018 python3 -> /usr/bin/python3.6*
-rwxr-xr-x 2 root root 14777608 Nov 3 00:36 python3.7*
-rwxr-xr-x 2 root root 14777608 Nov 3 00:36 python3.7m*
-rwxr-xr-x 1 root root 3097 Nov 3 00:37 python3.7m-config*
-rwxr-xr-x 1 root root 4522328 Feb 22 17:24 python3x*
# 4 - Test creating a symbolic link using sudo to get root privileges
# enter password if/when prompted
sudo ln -s /usr/local/bin/python3.7 /usr/local/bin/test37
# 4 - verify test
test37 --version
# Desired output
Python 3.7.1
# 5 - remove test and python3
sudo rm /usr/local/bin/test37
sudo rm /usr/local/bin/python3
# 6 - creating python3 symbolic link using sudo to get root privileges
# enter password if/when prompted
sudo ln -s /usr/local/bin/python3.7 /usr/local/bin/python3
# 7 - verify
python3 --version
# Desired output
Python 3.7.1
Of course the pythonic thing to do is to use virtual environments.
DaveStSomeWhere
- 196
- 1
- 6
-
1This solves the problem but creates a new one. Now, I can't get Ubuntu upgraded, it always throws the message: ModuleNotFoundError: No module named 'apt_pkg' – asa Jan 27 '21 at 23:11
-
-
For anyone else that sees this, suggested fix is to reinstall the `apt-get` package using `sudo apt-get install --reinstall python3-apt`. However, similar to another reply, I had to use `sudo apt remove --purge python3-apt` and then `sudo apt install python3-apt`. [Source](https://askubuntu.com/questions/480908/problem-with-update-manager-no-module-named-apt-pkg-in-ubuntu-13-10-having-i) – pheeper May 12 '23 at 17:38
