How to Install Latest Python from Source in Linux

Several top universities around the globe use Python to introduce students to programming. The Massachusetts Institute of Technology (MIT), the University of Texas at Arlington, and Stanford are only a few examples of institutions that use this language extensively.

Additionally, it is important to note that Python is also useful for a wide variety of educational, enterprise, and scientific purposes – from web development to desktop applications to machine learning and everything in between.

Currently, there are two major Python versions in use – 2 and 3, with 2 rapidly losing ground to 3 since the former is no longer under active development. Since all Linux distributions come with Python 2.x installed.

In this article, we will show how to install and use the latest Python version in RHEL-based distributions and Debian and its derivatives such as Ubuntu (the latest LTS version already has the latest Python installed) or Linux Mint. Our focus will be installing the core language tools that can be used in the command line.

However, we will also explain how to install Python IDLE – a GUI-based tool that allows us to run Python code and create standalone functions.

Install Python on Linux from Source

At the time of this writing (November 2022), the latest version is Python 3.11, and we are going to perform the installation from the source.

Although we can install the core packages and their dependencies using yum and aptitude (or apt-get) or apt.

Why? The reason is simple: this allows us to have the latest stable release of the language (3.11) and to provide a distribution-agnostic installation method.

Prior to installing Python in RHEL-based distributions such as CentOS Stream Fedora, Rocky, and AlmaLinux, let’s make sure our system has all the necessary development dependencies:

# yum -y groupinstall development
# yum -y install zlib-devel

In >Debian-based distributions such as Ubuntu and Linux Mint, we will need to install gcc, make, and the zlib compression/decompression library:

# aptitude -y install gcc make zlib1g-dev

Once needed core packages are installed, you can head over to the official Python download page to download the Python 3.11 source release or use the following wget command to download it directly and install it.

# wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
# tar xJf Python-3.11.0.tar.xz
# cd Python-3.11.0
# ./configure
# make
# make install
Install Python on Linux
Install Python on Linux

Now relax and go grab a sandwich because this may take a while. When the installation is complete, use which to verify the location of the main binary:

# which python3
# python3 -V
# python3

The output of the above command should be similar to:

[root@tecmint:~/Python-3.11.0]# which python3
/usr/local/bin/python3
[root@tecmint:~/Python-3.11.0]# python3 -V
Python 3.11.0
[root@tecmint:~/Python-3.11.0]# python3
Python 3.11.0 (main, Nov 15 2022, 09:50:56) [GCC 8.5.0 20210514 (Red Hat 8.5.0-10)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit
Use quit() or Ctrl-D (i.e. EOF) to exit
>>> quit()

Congratulations! Python 3.11 is now installed on your system.

Install Python IDLE on Linux

Python IDLE is a GUI-based tool for Python. If you wish to install the Python IDLE, grab the package named idle (Debian) or python-tools (RHEL).

# yum install python3-idle  [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
# apt-get install idle       [On Debian, Ubuntu and Mint]

Type the following command to start the Python IDLE.

# idle3
Or
# idle
Python IDLE Editor
Python IDLE Editor
Summary

In this article, we have explained how to install the latest Python stable version from the source.

Last, but not least, if you’re coming from Python 2, you may want to take a look at the 2to3 official documentation. This is a program that reads Python 2 code and transforms it into valid Python 3 code.

Do you have any questions or comments about this article? Feel free to get in touch with us using the form below.

Gabriel Cánepa
Gabriel Cánepa is a GNU/Linux sysadmin and web developer from Villa Mercedes, San Luis, Argentina. He works for a worldwide leading consumer product company and takes great pleasure in using FOSS tools to increase productivity in all areas of his daily work.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

15 thoughts on “How to Install Latest Python from Source in Linux”

  1. Installing from source as *root* is usually a bad idea. There is no uninstall step. You are likely to overwrite packages maintained by your system package manager (yum, apt, etc.) On Red Hat you can break yum which is difficult to recover from.

    Install packages if they are available. There are several choices of Python 3 packages for most distributions.

    Only build from source if you have to for some reason and then install someplace other than /usr.

    Reply
  2. You can rest assured that when you say “You can rest assured” in the future it will not work as you expect it to due mostly to bad assumptions such as in this case (not that it matters but using a headless latest generic installed openmediavault) we need to change the basic commands for the shell version apt/apt-get as assuming there’s a GUI application installed aptitude/yum etc will stop the beginner in their tracks as per all current so called developers not being end user/home user friendly etc…

    so anyway,

    apt -y groupinstall development
    apt -y install zlib-devel
    

    In Debian we will need to install gcc, make, and the zlib compression / decompression library:

    apt-get  -y install gcc make zlib1g-dev
    

    To install Python 3.6, run the following commands:

    wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
    tar xJf Python-3.6.3.tar.xz
    cd Python-3.6.3
    ./configure
    make -j4
    make install
    

    Now relax and go grab a sandwich because this may take a while. When the installation is complete, use which to verify the location of the main binary:

    # which python3
    # python3 -V
    

    before

    /usr/local/bin/python3
    

    after

    /usr/local/bin/python3
    

    before

    python3 -V
    Python 3.5.3
    

    after

    root@openmedia:~/Python-3.6.3# python3 -V
    Python 3.5.3
    
    Reply
  3. On OpenSUSE, you might need to install readline package as well.

    $ sudo zypper install zlib-devel
    $ sudo zypper install readline-devel
    $ ./configure --enable-optimizations
    $ make
    $ sudo make install
    
    Reply
  4. Mr. Cánepa, thanks for the method which you wrote and that worked perfectly for me.

    Now I have a related and urgent question for you, please.

    After I played with the Python 3.6 interpreter on command line, I think that my Linux Mint 17 does NOT support it very well for convenient use in the terminal.

    So I want to reverse to the system default Python 3.4 . Do you have some idea about how I should do it safely? I’ve googled about that and found no answer.

    Thank you very much.

    Reply
  5. Hi,

    After downloading python, when I use this command (./configure), it shows below error.

    configure: error: in /root/Python-3.6.3 :
    configure: error: no acceptable C compiler found in $PATH
    see `config.log` for more details

    Can you please tell me next what should I do?

    Reply
    • @Apurba,

      Install C Compiler (GCC) using the following command as per your Linux distribution (run as root).

      # yum groupinstall "Development tools"  [On RedHat based]
      # apt-get install build-essential       [On Debian based]
      
      Reply
  6. can you help me?

    root@debian:/home/rogerio/Área de trabalho/Python-3.6.0# make install
    if test “no-framework” = “no-framework” ; then \
    /usr/bin/install -c python /usr/local/bin/python3.6m; \
    else \
    /usr/bin/install -c -s Mac/pythonw /usr/local/bin/python3.6m; \
    fi
    if test “3.6” != “3.6m”; then \
    if test -f /usr/local/bin/python3.6 -o -h /usr/local/bin/python3.6; \
    then rm -f /usr/local/bin/python3.6; \
    fi; \
    (cd /usr/local/bin; ln python3.6m python3.6); \
    fi
    if test -f libpython3.6m.a && test “no-framework” = “no-framework” ; then \
    if test -n “” ; then \
    /usr/bin/install -c -m 555 /usr/local/bin; \
    else \
    /usr/bin/install -c -m 555 libpython3.6m.a /usr/local/lib/libpython3.6m.a; \
    if test libpython3.6m.a != libpython3.6m.a; then \
    (cd /usr/local/lib; ln -sf libpython3.6m.a libpython3.6m.a) \
    fi \
    fi; \
    if test -n “”; then \
    /usr/bin/install -c -m 555 /usr/local/lib/; \
    fi; \
    else true; \
    fi
    if test “x” != “x” ; then \
    rm -f /usr/local/binpython3.6-32; \
    lipo \
    -output /usr/local/bin/python3.6-32 \
    /usr/local/bin/python3.6; \
    fi
    running build
    running build_ext
    INFO: Can’t locate Tcl/Tk libs and/or headers
    warning: building with the bundled copy of libffi is deprecated on this platform. It will not be distributed with Python 3.7
    checking build system type… x86_64-unknown-linux-gnu
    checking host system type… x86_64-unknown-linux-gnu
    checking target system type… x86_64-unknown-linux-gnu
    /home/rogerio/Área de trabalho/Python-3.6.0/Modules/_ctypes/libffi/configure: line 2868: cd: too many arguments
    checking for gsed… sed
    checking for a BSD-compatible install… /usr/bin/install -c
    checking whether build environment is sane… configure: error: unsafe srcdir value: ‘/home/rogerio/Área de trabalho/Python-3.6.0/Modules/_ctypes/libffi’
    Failed to configure _ctypes module
    *** WARNING: renaming “_ctypes” since importing it failed: build/lib.linux-x86_64-3.6/_ctypes.cpython-36m-x86_64-linux-gnu.so: cannot open shared object file: No such file or directory
    error: [Errno 2] No such file or directory: ‘build/lib.linux-x86_64-3.6/_ctypes.cpython-36m-x86_64-linux-gnu.so’ -> ‘build/lib.linux-x86_64-3.6/_ctypes.cpython-36m-x86_64-linux-gnu_failed.so’
    Makefile:617: recipe for target ‘sharedmods’ failed
    make: *** [sharedmods] Error 1
    root@debian:/home/rogerio/Área de trabalho/Python-3.6.0#

    Reply
    • @Rogerio,

      Have you installed necessary development dependencies on the system? If not, please install it as shown in the article, before installing Python from sources..

      Reply
  7. I thought that installing 3.6 on Linux without care can wreck your system, my understanding is that Linux uses 2.x for yum. Is this true? Do you have to install it separately from 2.x? If so, how do you do that? Sorry, I’m new to this..

    Reply
    • Diane,

      You can rest assured that you won’t wreck your system by following the steps outlined in this article :). And by the way, Python3.x and Python2.x can coexist in the same problem without issues. However, problems may arise if you try to change the symbolic links that point to the binaries — python points to python version 2 whereas python3 points to version 3. Hope this helps.

      Reply

Leave a Reply to Rob T. Cancel reply

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.