his tutorial will guide you through installing Python 3 on a CentOS 7 system using the Software Collections (SCL) along side the distribution default Python version 2.7. We will also show you how to create a Python virtual environment.
Python is one of the most popular programming languages in the world, with its simple and easy to learn syntax Python is a great choice for beginners and experienced developers. Python is quite versatile programming language, you can use it to do almost anything you want, write small scripts, build games, develop websites, create machine learning algorithms, analyze data and more.
Many popular applications and websites including YouTube, DropBox, Reddit, Quora, Instagram, Pinterest have been developed using Python.
While Python 2 is well-supported and active, Python 3 is considered to be the present and future of the language.
Enable Software Collections
Software Collections, also known as SCL is a community project that allows you to build, install, and use multiple versions of software on the same system, without affecting system default packages. By enabling Software Collections you will gain access to the newer versions of programming languages and services which are not available in the core repositories.
In order to enable SCL we need to install the CentOS SCL release file. It is part of the CentOS extras repository and can be installed by running the following command:
sudo yum install centos-release-scl
Install Python 3
Now that we have access to the SCL repository we can install any Python 3.x version we need. Currently the following collections are available:
In this tutorial we will install Python 3.6 which is the latest version available at the time of writing. To do so type the following command on your CentOS 7 terminal:
sudo yum install rh-python36
Using Python 3
If you check the Python version by typing:
you will notice that Python 2.7 is the default Python version in your current shell.
To access Python 3.6 you need to launch a new shell instance using the Software Collection scl tool:
scl enable rh-python36 bash
What the command above does is calling the script /opt/rh/rh-python36/enable which changes the shell environment variables.
If you check the Python version now you’ll notice that Python 3.6 is the default version.
It is important to point out that Python 3.6 is the default Python version only in this shell session. If you exit the session or open a new session from another terminal Python 2.7 will be the default Python version.
Install development tools
Development tools are required for building Python modules, you can install the necessary tools and libraries by typing:
sudo yum groupinstall ‘Development Tools’
Creating a virtual environment
Python Virtual Environments allows you to install Python modules in an isolated location for a specific project, rather than being installed globally. This way you do not have to worry of affecting other Python projects.
The preferred way to create a new virtual environment in Python 3 is by executing the venv command.
Let’s say we want to create a new Python 3 project called my_new_project inside our user home directory and matching virtual environment.
First create the project directory and switch to it:
Activate Python 3.6 using the scl tool:
scl enable rh-python36 bash
From inside the project root run the following command to create a virtual environment named my_project_venv:
python -m venv my_project_venv
To use the virtual environment we need to activate it, by typing:
After activating the environment, the shell prompt will be prefixed with the name of the environment:
(my_project_venv) [email protected]:~/my_new_project$
It’s worth mentioning that starting with Python 3.4, when creating virtual environments, pip the package manager for Python is installed by default.
You should now have Python 3 programming environment setup on your CentOS 7 machine and you can start developing your Python 3 project.
You can also read about how to Install Odoo 11 on CentOS 7 and see an example of how to use Python 3 virtual environment to run Python software on a CentOS 7 server.
If you have any questions or feedback, feel free to comment below.