updated: 1st of October 2017
published: 14th of September 2017
Centos 7 minimal ships with python 2.7.5 and using such an old python version can cause problems when using some python packages for network automation. This post describes how to install python 2.7.13 and python 3.6.2 on a Centos 7 minimal server.
Install required YUM packages.
sudo yum install -y gcc wget zlib zlib-devel openssl openssl-devel
Use wget to download the python tar files.
cd /tmp
wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
Extract the tar files.
tar -xvf Python-2.7.13.tgz
tar -xvf Python-3.6.2.tgz
Build the python versions and make an alternate install.
cd /tmp/Python-2.7.13
./configure --prefix=/usr/local
sudo make altinstall
cd /tmp/Python-3.6.2
./configure --prefix=/usr/local
sudo make altinstall
sudo make altinstall prevents replacement of the /usr/bin/python binary. Its recommended to leave the system python alone on RHEL distributions as yum uses the system python for updates.
Create a symlink for /usr/bin/python3.6
sudo ln -s /usr/local/bin/python3.6 /usr/bin/python3.6
Install pip with both python2.7 and python3.6
cd /tmp
wget "https://bootstrap.pypa.io/get-pip.py"
sudo /usr/local/bin/python2.7 get-pip.py
sudo /usr/local/bin/python3.6 get-pip.py
Create symlinks for pip
sudo ln -s /usr/local/bin/pip2.7 /usr/bin/pip2
sudo ln -s /usr/local/bin/pip3.6 /usr/bin/pip3
Old versions of setuptools and pip can also cause issues with some network automation libraries so update them with pip
sudo pip2 install -U pip setuptools
sudo pip3 install -U pip setuptools
Confirm python and pip versions.
python2.7 --version
# output
Python 2.7.13
python3.6 --version
# output
Python 3.6.2
pip2.7 --version
# output
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
pip3.6 --version
# output
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
cd /tmp
rm -f get-pip.py
sudo rm -rf Python-*
There it is, modern python versions installed on Centos 7 minimal the traditional way. This post is mostly for documentation, in practice you would use your configuration management tools to install these versions of python.