As most know, Python 3.7 is the oldest currently security-supported Python version with many porting or upgrading to 3.8, 3.9, and most recently 3.10 with 3.11 in RC status. For some applications or frameworks on Ubuntu, you may need to install Python 3.7 on your system. Python 3.7 is currently being worked on for security releases until its end of life on the 6th month of 2023. However, it is advisable to upgrade to newer versions if you develop applications as soon as possible.
In the following tutorial, you will learn how to download the latest Python 3.7 and install the archive format or use a PPA with this version of Python on Ubuntu 20.04 LTS Focal Fossa using the command terminal.
Table of Contents
1
- Update Ubuntu
- Install Python 3.7 – PPA Method
- Alternative – Nightly Builds
- Install Python 3.7 – Manual Method
- Download Python 3.7
- Create a Virtual Environment
- Install Python PIP 3.7
- Comments and Conclusion
Update Ubuntu
Before you begin, run a quick update to ensure your system is up-to-date to avoid conflicts during the tutorial and good system maintenance.
sudo apt update && sudo apt upgradeInstall Python 3.7 – PPA Method
The first and easiest solution for Ubuntu users would be to import the “deadsnakes” team Launchpad PPA. Given that 3.7 will not see many updates besides urgent security upgrades, you should install the standard stable, but the nightly version will be discussed for those who prefer it; updates will most likely hit both simultaneously.
First, install the prerequisite for adding custom PPAs.
sudo apt install software-properties-common -ySecond, add the deadsnakes/ppa to your APT package source list with the following command.
sudo add-apt-repository ppa:deadsnakes/ppa -yOnce the repository has been imported, run an APT update to fresh your package manager to reflect the new imported PPA.
sudo apt updateYou can now install Python 3.7 by executing the following code:
sudo apt install python3.7 -yTo verify the installation and Python 3.7 build version, perform the following.
python3.7 --versionExample output:
Optionally, you can install the following extras.
Install development headers for building C extensions:
sudo apt install python3.7-devInstall the standard library (venv) module:
sudo apt install python3.7-venvInstall the standard library (distutils) module:
sudo apt install python3.7-distutilsInstall the (2to3.3.7) utility as well as the standard library (lib2to3) module:
sudo apt install python3.7-lib2to3Install the standard library (dbm.gnu) module:
sudo apt install python3.7-gdbmInstall the standard library (tkinter) module:
sudo apt install python3.7-tkAlternative – Nightly Builds
For developers that require the latest nightly builds, the PPA has an additional branch for these builds. However, they should only be used by professionals and developers that require the use of such builds.
sudo add-apt-repository ppa:deadsnakes/nightly -yIf you have the default 3.7 stable by (deadsnakes/ppa), you can run the apt update command to upgrade the existing packages.
sudo apt updateThen upgrade the packages:
sudo apt upgradeIf you do not have Python installed, use the installation command.
sudo apt install python3.7 -yIf you want to roll back to the stable PPA. First, remove python 3.7.
sudo apt autoremove python3.7Next, remove the Nightly build PPA.
sudo add-apt-repository --remove ppa:deadsnakes/nightly -yOnce done, update the APT repository list to reflect the removal.
sudo apt updateNow re-install Python 3.7; you will re-add the stable PPA if you remove it.
Install Python 3.7 – Manual Method
Download Python 3.7
Once you have the download link, use the wget command to download the Python 3.7 archive.
wget //www.python.org/ftp/python/3.7.13/Python-3.7.13.tar.xzExtract the Python archive. Remember to change the version number if you downloaded a newer one.
tar -xf Python-3.7.{version}.tar.xzOptionally, move Python 3.7 to a proper destination such as the /opt/ directory.
sudo mv Python3.7.{version} /opt/Now install the dependencies required to install Python 3.7.
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev -yNavigate to the directory
cd /opt/Python3.7.{version}/Now, run the ./configure –enable-optimizations command.
./configure --enable-optimizations --enable-sharedNote, The script performs several checks to make sure all of the dependencies on your system are present. The ./configure –enable-optimizations will optimize the Python binary by running multiple tests, which will make the build process slower.
Now that you have built and configured the environment, it is time to compile it with the command make.
makeA handy trick is to specify the -j <number of cpu> as this can significantly increase compiling speed if you have a powerful server. For example, the LinuxCapable machine has 6 CPUs, and I can use all 6 or at least use 4 to 5 to increase speed.
make -j 6Once you have finished building, install Python binaries as follows:
sudo make altinstallNote, it is advised to use the make altinstallcommand NOT to overwrite the default Python 3 binary system.
Next, after the installation, you need to configure the dynamic linker run-time bindings:
sudo ldconfig /opt/Python3.7.{version}Note, do not skip this, or you will face issues. You will also need to replace the path with your directory name and version.
Confirm that Python 3.7 is installed and the build version by running the following command:
python3.7 --versionExample output:
Create a Virtual Environment
Python’s venv module is a virtual environment is a Python environment such that the Python interpreter, libraries, and scripts installed into it are isolated from those established in other virtual environments, and (by default) any libraries installed on your operating system, for example, those that are installed on your Ubuntu system to avoid clashing and disturbing your production environments.
To ensure Python 3.7 is installed correctly and functioning, create a quick Python project.
First, create the project directory and navigate to it:
mkdir ~/test_app && cd ~/test_appInside the project root directory, run the following command to create a virtual environment for the test name test_app.
python3.7 -m venv test_app_venvNext, activate the virtual environment as follows:
source test_app_venv/bin/activateAfter starting the virtual environment, you will now be in the shell prompt terminal. This will show the name of your environment that will be prefixed.
Example:
To exit the virtual environment, use the following command:
deactivateFor older versions of Python, it is advised to install PIP by downloading get-pip.py using the wget command.
wget //bootstrap.pypa.io/get-pip.pyNext, install the file downloaded.
python3.7 get-pip.pyOnce installed, it is a good idea to check for upgrades.
python3.7 -m pip install --upgrade pipExample output:
Now verify the PIP 3.7 version installed with the following command.
pip3.7 --versionExample output:
Comments and Conclusion
In the tutorial, you have learned how to install Python 3.7 and create a virtual test environment on Ubuntu 20.04 LTS Focal Fossa desktop or server.
Overall, it is advised if you are in development to move to Python 3.10 in the future, but using Python 3.7 is still safe as the Python Software Foundation maintains 3.7 until the middle of 2023. Still, you must check for updates and re-install Python using the steps provided in the tutorial.