Getting the Python release
First we need to go to Python's source download link at https://www.python.org/downloads/source/ and choose our Python version, for this tutorial I have chosen Python 3.5.2 as it's the latest stable release as of this writing.
or directory specific:
wget -P /tmp https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
The above command will download python 3.5.2 Gzipped source tarball to the current directory I'm currently in
/root, you can specify
-P as specified above to save on that directory.
If you get:
bash: wget: command not found
yum install wget
Once the file is downloaded you can
cd to the directory you choose and extract the tarball file:
tar xf Python-3.5.2.tgz
The parameters passed in to the
tar simply means "extract from a file", don't expect any output as we have not specified, or you can pass in an extra parameter to force the output
xvf, which means "extract verbosely from a file".
You should now have a directory called Python-3.5.2, which contains all python source.
Most Unix based operating systems uses the same process to build, compile and install applications from source.
./configure prepare and link files to build the environment, generates makefile.
make uses the makefile to connect libraries and compile.
make install or
altinstall in our case - copy compiled files generated by make and install the application as configured using ./configure.
Please note that we will be using
make altinstall to avoid future problems with other versions of python.
You would generally see these 3-steps when building from the source.
./configure make make install
Now we have almost everything set to start building Python, if you are installing on a fresh minimal Linux distribution as I am, you are probably going to need to install some other tools to compile, you can install the Development tools group which will contain all dependencies such as gcc, make etc.
yum groupinstall "Development tools"
Because python will try to install pip, we need to install some of it's dependencies so that our build works flawless.
Pip is part of the Extra Packages for Enterprise Linux (EPEL), which is a community repository of non-standard packages for the RHEL distribution.
Install the repository:
yum -y install epel-release
Now refresh the repository:
Pip is dependent on SSL/TLS, so let's install openssl.
yum install openssl openssl-devel
Next, we are going to configure the installation directory on
/usr/local, we can change the path by passing extra parameters to
./configure, to be exact
Now that we have a directory prefix set and configure we can execute make:
The build process will kick off and it should compile smoothly, since we are using a stable version of Python.
Whenever we are installing a custom version of Python we need to specifically use
altinstall because we don't want to end up with two different versions of Python in the filesystem both name python. It can lead to problems that would be hard to diagnose.
You should now have Python installed in your system ready to go:
python3.5 --version Python 3.5.2
For convenience you can make use of pip by creating a symlink:
ln -s /usr/local/bin/pip3.5 /usr/local/bin/pip
pip --version pip 8.1.1 from /usr/local/lib/python3.5/site-packages (python 3.5)