• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

UnixArena

  • Home
  • kubernetes
  • DevOps
    • Terraform
    • Jenkins
    • Docker
    • Openshift
      • OKD
    • Ansible engine
    • Ansible Tower
      • AWX
    • Puppet
  • Cloud
    • Azure
    • AWS
    • Openstack
    • Docker
  • VMware
    • vCloud Director
    • VMware-Guests
    • Vcenter Appliance 5.5
    • vC OPS
    • VMware SDDC
    • VMware vSphere 5.x
      • vSphere Network
      • vSphere DS
      • vShield Suite
    • VMware vSphere 6.0
    • VSAN
    • VMware Free Tools
  • Backup
    • Vembu BDR
    • Veeam
    • Nakivo
    • Azure Backup
    • Altaro VMBackup
    • Spinbackup
  • Tutorials
    • Openstack Tutorial
    • Openstack Beginner’s Guide
    • VXVM-Training
    • ZFS-Tutorials
    • NetApp cDot
    • LVM
    • Cisco UCS
    • LDOM
    • Oracle VM for x86
  • Linux
    • How to Articles
    • Q&A
    • Networking
    • RHEL7
  • DevOps Instructor-led Training
  • Contact

How to Install Python 3 on Redhat Enterprise Linux 7.x ?

May 17, 2018 By Cloud_Devops 3 Comments

Python is available on most of the operating systems in the world. By default Redhat provides 2.7x version on Redhat Enterprise Linux 7.x.  But the new development is mostly happening on Python 3.x version since 2.x is legacy. If you need python 3.x, then you need to install it using the Redhat software repository  (if you have Redhat subscription)  or you could use centos/fedora repository via epel . Let’s quickly walk through the python 3.x installation. We will also see how to make python 3.x available as default program.

Environment:


  • Redhat Enterprise Linux 7.4
  • Internet Connectivity.
  • Exiting python version – 2.7

 

Enabling EPEL Repository:


1.Login to RHEL 7.x as root user .

2. Install latest  epel-release package .

[root@uaans ~]# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E '%{rhel}').noarch.rpm
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
epel-release-latest-7.noarch.rpm                                                                                              |  15 kB  00:00:00
Examining /var/tmp/yum-root-kpLZS_/epel-release-latest-7.noarch.rpm: epel-release-7-11.noarch
Marking /var/tmp/yum-root-kpLZS_/epel-release-latest-7.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package       Arch       Version       Repository                  Size
================================================================================
Installing:
 epel-release  noarch     7-11    /epel-release-latest-7.noarch     24 k

Transaction Summary
===============================================================================
Install  1 Package

Total size: 24 k
Installed size: 24 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : epel-release-7-11.noarch                                                                                                          1/1
  Verifying  : epel-release-7-11.noarch                                                                                                          1/1

Installed:
  epel-release.noarch 0:7-11

Complete!
[root@uaans ~]#

 

3. Install “ius-release” package from CentOS repository.

[root@uaans ~]# yum install -y https://centos7.iuscommunity.org/ius-release.rpm
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
ius-release.rpm                                     | 8.1 kB  00:00:00
Examining /var/tmp/yum-root-kpLZS_/ius-release.rpm: ius-release-1.0-15.ius.centos7.noarch
Marking /var/tmp/yum-root-kpLZS_/ius-release.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package ius-release.noarch 0:1.0-15.ius.centos7 will be installed
--> Finished Dependency Resolution
epel/x86_64/metalink                                | 5.8 kB  00:00:00
epel/x86_64                                         | 4.7 kB  00:00:00
epel/x86_64/group_gz                                |  84 kB  00:00:00
epel/x86_64/updateinfo                              | 924 kB  00:00:01
epel/x86_64/primary_db                              | 6.4 MB  00:00:03

Dependencies Resolved

=================================================================================
 Package        Arch      Version              Repository               Size
=================================================================================
Installing:
 ius-release   noarch     1.0-15.ius.centos7  /ius-release             8.5 k

Transaction Summary
=================================================================================
Install  1 Package

Total size: 8.5 k
Installed size: 8.5 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : ius-release-1.0-15.ius.centos7.noarch                   1/1
  Verifying  : ius-release-1.0-15.ius.centos7.noarch                   1/1

Installed:
  ius-release.noarch 0:1.0-15.ius.centos7

Complete!
[root@uaans ~]#

 

Installing Python 3.x on RHEL 7.x :


1. Install python 3.6 version(Current Stable Release ) using yum command .

[root@uaans ~]# yum install -y python36u python36u-pip
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
ius                                                               | 2.3 kB  00:00:00
ius/x86_64/primary_db                                             | 250 kB  00:00:03
Resolving Dependencies
--> Running transaction check
---> Package python36u.x86_64 0:3.6.5-1.ius.centos7 will be installed
--> Processing Dependency: python36u-libs(x86-64) = 3.6.5-1.ius.centos7 for package: python36u-3.6.5-1.ius.centos7.x86_64
--> Processing Dependency: libpython3.6m.so.1.0()(64bit) for package: python36u-3.6.5-1.ius.centos7.x86_64
---> Package python36u-pip.noarch 0:9.0.1-1.ius.centos7 will be installed
--> Processing Dependency: python36u-setuptools for package: python36u-pip-9.0.1-1.ius.centos7.noarch
--> Running transaction check
---> Package python36u-libs.x86_64 0:3.6.5-1.ius.centos7 will be installed
---> Package python36u-setuptools.noarch 0:39.0.1-1.ius.centos7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================
 Package             Arch            Version              Repository       Size
===================================================================================
Installing:
 python36u          x86_64          3.6.5-1.ius.centos7    ius             57 k
 python36u-pip      noarch          9.0.1-1.ius.centos7    ius             1.8 M

Installing for dependencies:
 python36u-libs     x86_64          3.6.5-1.ius.centos7    ius             8.7 M
 python36u-setuptools noarch        39.0.1-1.ius.centos7   ius             642 k

Transaction Summary
====================================================================================
Install  2 Packages (+2 Dependent packages)

Total download size: 11 M
Installed size: 52 M
Downloading packages:
warning: /var/cache/yum/x86_64/7Server/ius/packages/python36u-3.6.5-1.ius.centos7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 9cd4953f: NOKEYTA
Public key for python36u-3.6.5-1.ius.centos7.x86_64.rpm is not installed
(1/4): python36u-3.6.5-1.ius.centos7.x86_64.rpm                                |  57 kB  00:00:01
(2/4): python36u-setuptools-39.0.1-1.ius.centos7.noarch.rpm                    | 642 kB  00:00:05
(3/4): python36u-pip-9.0.1-1.ius.centos7.noarch.rpm                            | 1.8 MB  00:00:19
(4/4): python36u-libs-3.6.5-1.ius.centos7.x86_64.rpm                           | 8.7 MB  00:00:30
-----------------------------------------------------------------------------------------------------
Total                                                                     109 kB/s |  11 MB  00:01:44
Retrieving key from file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
Importing GPG key 0x9CD4953F:
 Userid     : "IUS Community Project <coredev@iuscommunity.org>"
 Fingerprint: 8b84 6e3a b3fe 6462 74e8 670f da22 1cdf 9cd4 953f
 Package    : ius-release-1.0-15.ius.centos7.noarch (installed)
 From       : /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python36u-libs-3.6.5-1.ius.centos7.x86_64             1/4
  Installing : python36u-3.6.5-1.ius.centos7.x86_64                  2/4
  Installing : python36u-setuptools-39.0.1-1.ius.centos7.noarch      3/4
  Installing : python36u-pip-9.0.1-1.ius.centos7.noarch              4/4
  Verifying  : python36u-3.6.5-1.ius.centos7.x86_64                  1/4
  Verifying  : python36u-pip-9.0.1-1.ius.centos7.noarch              2/4
  Verifying  : python36u-libs-3.6.5-1.ius.centos7.x86_64             3/4
  Verifying  : python36u-setuptools-39.0.1-1.ius.centos7.noarch      4/4

Installed:
  python36u.x86_64 0:3.6.5-1.ius.centos7                                  python36u-pip.noarch 0:9.0.1-1.ius.centos7

Dependency Installed:
  python36u-libs.x86_64 0:3.6.5-1.ius.centos7                           python36u-setuptools.noarch 0:39.0.1-1.ius.centos7

Complete!
[root@uaans ~]#

 

2. Identify the current python version and python path.

[root@uaans ~]# which python
/usr/bin/python
[root@uaans ~]# ls- lrt /usr/bin/python
[root@uaans bin]# ls -lrt /usr/bin/python
lrwxrwxrwx. 1 root root 7 May  5 05:28 /usr/bin/python -> python2
[root@uaans bin]# cd /usr/bin/
[root@uaans bin]# ls -lrt python*
-rwxr-xr-x. 1 root root  7216 Feb 20 06:20 python2.7
-rwxr-xr-x. 2 root root 11312 Apr 10 15:11 python3.6m
-rwxr-xr-x. 2 root root 11312 Apr 10 15:11 python3.6
lrwxrwxrwx. 1 root root     9 May  5 05:28 python2 -> python2.7
lrwxrwxrwx. 1 root root     7 May  5 05:28 python -> python2
[root@uaans bin]#

Here you could see that python is soft linked to python2 and python2 is soft linked to python 2.7 .

 

3. Let’s find out the command search path.

[root@uaans bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@uaans bin]#

Here you can see that “Commands” will be searched first in “/usr/local/sbin” and then it will search in “/usr/bin”.

 

4. Let’s create a soft link as python under “/usr/local/sbin” for python 3.6.

[root@uaans bin]# ln -s /usr/bin/python3.6 /usr/local/sbin/python

5.Execute “python” and check the version.

[root@uaans bin]# python -V
Python 3.6.5
[root@uaans bin]#

We have made python 3.6 as default python program without removing or modifying the existing python’s soft link.

[root@uaans bin]# python -V
Python 3.6.5
[root@uaans bin]# python2 -V
Python 2.7.5
[root@uaans bin]# python3.6 -V
Python 3.6.5
[root@uaans bin]#

 

Filed Under: Python, RHEL7 Tagged With: Python, RHEL7

Reader Interactions

Comments

  1. Aditya says

    May 28, 2020 at 9:18 am

    Hi,

    Step 3 is not working.

    Please update the command as below:

    # sudo yum install https://repo.ius.io/ius-release-el7.rpm

    Refer link [1] for more information.

    [1] https://github.com/iusrepo/announce/issues/18

    Reply
  2. Sandeep Kumar says

    March 18, 2019 at 6:50 am

    Hi,

    Even after creating the link, the python version is still showing the same:

    [root@XXX pip]# which python2.7
    /bin/python2.7
    [root@XXX pip]# ls -l /bin/python
    lrwxrwxrwx. 1 root root 7 Apr 13 2017 /bin/python -> python2
    [root@XXX pip]# ls -l /bin/python2
    lrwxrwxrwx. 1 root root 9 Apr 13 2017 /bin/python2 -> python2.7
    [root@XXX pip]# ls -l /bin/python2.7
    -rwxr-xr-x. 1 root root 7144 Aug 2 2016 /bin/python2.7
    [root@XXX pip]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    [root@XXX pip]# ln -s /usr/bin/python3.6 /usr/local/sbin/python^C
    [root@XXX pip]# ln -s /bin/python
    python python2 python2.7 python3 python3.4 python3.4m
    [root@XXX pip]# ln -s /bin/python3.4
    python3.4 python3.4m
    [root@XXX pip]# ln -s /bin/python3.4 /usr/local/sbin/python
    [root@XXX pip]# python -V
    Python 2.7.5
    [root@XXX pip]# which python
    /usr/local/sbin/python
    [root@XXX pip]#

    Reply
    • Lingeswaran R says

      March 18, 2019 at 10:45 pm

      1. We should not replace the default python.
      2. Use python3 by mentioning the direct path. or python3 command. This is becoz most of the Linux commands relies on python.
      3. In your case, a link might already be existing and that could be pointed to python2.7.

      Thank you
      Lingesh

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Follow UnixArena

  • Facebook
  • LinkedIn
  • Twitter

Copyright © 2025 · UnixArena ·

Go to mobile version