Python 3.11 is recently launched with multiple improvements and security upgrades. This version provides developers to easily debug their code with fine-grained error locations in tracebacks. The new “Self” annotation provides a simple way to annotate methods that return an instance of their class.

Advertisement

Mostly the latest operating systems come with the latest Python versions. But the OS versions released before the release of Python 3.11 may not have the latest version. This tutorial will help you to install Python 3.11 on your CentOS, Red Hat & Fedora operating systems by compiling it from source code.

Requirements

This Python installation required a GCC compiler on your system. Login to your server using ssh or shell access. Now, use the following command to install prerequisites for Python before installing it.

sudo dnf install gcc openssl-devel bzip2-devel sqlite-devel 

Step 1: Download Python 3.11

Download Python using the following command from the Python official site. You can also download the latest version in place of specified below.

cd /usr/src 
wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz 

Now extract the downloaded package.

tar xzf Python-3.11.3.tgz 

Step 2: Install Python 3.11 on CentOS & Fedora

Use the below set of commands to compile Python source code using the ./configure script and the make with altinstall.

cd Python-3.11.3 
sudo ./configure --enable-optimizations 
sudo make altinstall 

make altinstall is used to prevent replacing the default python binary file /usr/bin/python .

Now remove the downloaded source archive file from your system

sudo rm /usr/src/Python-3.11.3.tgz 

Step 3: Check Python Version

Check the latest version installed of python using the below command.

python3.11 -V 

Python 3.11.3

Conclusion

In this tutorial, you have found the instructions to install Python 3.11 on CentOS, RHEL, and Fedora systems by compiling it from the source code. We still suggest to the package manager for the Python installation, but if the package manager is failing to do it, compile it from the source code.

Share.

27 Comments

  1. How to remove old Python installations like this?
    Since Python 3.3 I try to get the newest version of Python3 in CentOS6 with this method.
    Now I have a system which has Python 3.3, 3.4 … 3.9 and between installed, but I don’t need all of them.
    Is there a save way to uninstall those again?

    P.S.: reCAPTCHA is a huge NO-GO!

    • I guess you could just remove the /usr/bin/python binary by a symlink to python3.6:

      rm /usr/bin/python
      ln -s /usr/local/bin/python3.6 /usr/local/bin

  2. This worked like charm.
    For RHEL 7.4, python 3.6, I later started getting ‘ModuleNotFoundError’ for ‘import nltk’.
    The reason is that sqlite3 wasn’t compiled properly.
    I installed sqlite-devel and recompiled python 3.6 – which had the issue fixed.
    yum install sqlite-devel
    /usr/src/Python-3.6.9 #Had the src already downloaded and extracted here
    ./configure –enable-optimizations
    make altinstall

  3. For most people, building Python from source isn’t good advice. Look through the comments that are already here.

    1 – There is no uninstal command, you are manually making changes to your system as root.
    2 – The dependency list to get all of the standard library modules (SSL, compression, database, etc. ) is long. See the above comments. Check one of the source RPMs for a full list of the packages that should be pre-installed. The details aren’t easy to get right. That’s why we have rpm and yum.
    3 – If you accidentally run ‘make install’ as root, you will likely break yum and other system admin utilities. This is tricky to recover from.
    4 – If there are bugs/security vulnerabilities in any of the underlying libraries, how will you know when you need to patch and rebuild your personal python build?
    5 – For companies that are using RHEL, there is usually an expectation of support from Red Hat. You can get a supported Python 3 from Red Hat via Software Collections. If you install from source, you are completely on your own.

  4. I want to install some python 3.6 packages with yum command without using pip so where can I get the required repository for it ?

  5. having same issue, not found, fied by:
    # PATH=”/usr/local/bin:$PATH”

    also will be good to add aliases, add these to your .bashrc:
    alias python3=’/usr/local/bin/python3.5′
    alias pip3=’/usr/local/bin/pip3.5′
    # (without this sudo does not see aliases)
    alias sudo=’sudo ‘

  6. Thanks Rahul.

    These instructions were helpful to me in installing Python 3.6 as a separate installation on top of current python 2.6 on Redhat 6

    • Hi Andrew, I have successfully installed modules with pip3.6.

      $ pip3.6 install pypiHello

      Collecting pypiHello
      Downloading pypiHello-1.2.zip
      Installing collected packages: pypiHello
      Running setup.py install for pypiHello … done
      Successfully installed pypiHello-1.2

  7. This method builds a python executable without ssl support and without bz2 support.
    Install openssl-devel and bzip2-devel before running configure.

    Also, run “configure –enable-optimizations” to get standard optimizations.

    Lastly, you may want to add some useful symlinks after installation, mapping e.g. pip3.6 to pip3, python3.6 to python3, etc..

  8. I get “zipimport.ZipImportError: can’t decompress data; zlib not available” when doing “make altinstall”. I know zlib is installed because “yum install zlib” gives me “Package zlib-1.2.7-17.el7.x86_64 already installed and latest version”

  9. And how can I remove Python 3.6 after these instructions?
    I use Spyder and this software didn’t recognize Py 3.6 (only its version 3.5).
    Thanks in advance

Exit mobile version