Setting python3 to version 3.7 on WSL

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


Solution 1:

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.