4

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

enter image description here

wbadry
  • 260
  • 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 Answers1

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.

  • 1
    This 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
  • @asa Did you manage to solve the apt_pkg Exception? – Tes3awy Dec 24 '21 at 20:58
  • 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 – pheeper May 12 '23 at 17:38