RHEL 8 has a new way how Python is installed and handled. How do you use it properly then, especially when multiple versions are installed? Read on to learn how to properly set up a virtual environment nevertheless.
Red Hat Enterprise Linux 8 was released in May this year – and comes with a lot of changes. Think of a really modern OS here. Among those changes is also that Python is, well different: it is included, for sure. But at the same time, it isn’t.
The important piece is anyway that, when you work with Python in development environments or for example when you are dealing with Ansible, it makes sense to run everything in a Python virtual environment.
Here is how this can be best done in RHEL 8:
First, install the Python 3.6 appstream:
$ sudo yum install -y python36
Afterwards, set up a python virtual environment:
$ python3.6 -m venv myvirtual_venv
And that’s it already. Activate it with:
$ source myvirtual_venv/bin/activate
In case you are dealing with SELinux bindings, it might make sense to link those into your virtual environment:
$ cd myvirtual_venv/lib/python3.6/site-packages/ $ ln -s /usr/lib64/python3.6/site-packages/selinux $ ln -s /usr/lib64/python3.6/site-packages/_selinux.cpython-36m-x86_64-linux-gnu.so
When in the future different versions of Python are offered via appstreams, make sure to pick the right selinux bindings when you link them into your virtual environment.
Another way to work with selinux libs is to create the virtual environment by using system packages:
$ python3.6 -m venv --system-site-packages myvirtual_venv