Tuesday, November 6, 2018

Python:: Installation on Ubuntu

Recently I had a requirement to install python in linux VM running on Ubuntu 18.04. Here is the list of steps, I followed to set it up.

1. Download the source code of an official Python release.

Download the "Gzipped source tarball" using the wget command. If wget is not installed, install it using OS package manager.

sudo yum install wget

wget https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz

Once the file is downloaded, unpack it using the tar command. 

tar zxvf Python-2.6.6.tgz

zxvf -->  "unzip/extract verbosely from a file"

Switch to unzipped directory 

cd Python-2.6.6


2. Configure the build appropriately for our machine.

If ./configure and/or make commands used with the default settings, then use "make clean" to wipe out any work it did and start again.

./configure produces is another large, automatically generated script called Makefile. The Makefile contains instructions on how to achive various tasks like "build" or "make the executable called python" or "run the test suite". The Makefile script is executed with the make command. We can run make to execute the default task (i.e. the first one in the file) or, e.g., make test to run the "test" task.

./configure

If we need to install multiple versions side-by-side and point new installation to somewhere else, then run the ./configure command with --prefix argument. It's also useful, if we don't have root privilege to use sudo command.

./configure --prefix=/usr/local/lib/Python-2.6.6

To make Python code execution faster, use optimization. It will take long time to configure, but the resulting python binary interpreter is 10% faster at executing Python code.

./configure --enable-optimizations


3. Compile the software.

The default task for Python, like most packages, is to compile the software so running. So run make to execute the default task

make


4. Test the software to make sure it works properly.

Run the test suite to make sure that it all works as expected. The tests can take a long time to run so we can skip this step, if needed.

make test


5. Install the software.

Once it’s built, then install the software. make install convention will install under the /usr/local/ directory by default: they’ll put their executables in /usr/local/bin/, data files in /usr/local/share/, etc. The /usr/local/ directory is properly considered part of the operating system

sudo make install

This will create the directories and copy the compiled files into place 

sudo make altinstall

We use the altinstall target here in order to not overwrite the system’s version of Python. Please only use the altinstall target on make. Using the install target will overwrite the python binary. While this seems like it would be cool, there are big portions of the system that rely on the pre-installed version of Python.


6. Configure system to make sure the software can be used easily.

Create symbloic link for python binary into /usr/bin or /usr/local/bin/ as python2.6

sudo ln -fs /usr/local/lib/Python-2.6.6/Python /usr/bin/python2.6

or

sudo ln -fs /usr/local/lib/Python-2.6.6/Python /usr/local/bin/python2.6

We can also at add the directory to user $PATH rather than using symbolic links.

If we want to use the new install in just this shell session we can change $PATH temporarily. The $PATH variable contains a : separated list of directories to search for an executable when we run a command in the shell. The first executable file with the right name is the one that will be executed. The which command can do this search and tell which file will be executed or even give a list of all the options:

PATH="/usr/local/lib/Python-2.6.6/Python/bin:$PATH"
export PATH

To make this change permanent we need to change user shell configuration files. The name of these configuration files and whether or not they already exist can change from system to system but they are always in user $HOME directory and are called one or more of the following:

.bashrc
.bash_rc
.bash_profile
.profile

If any of those files already exist in user $HOME directory (files beginning with a . are considered "hidden" by most UNIX tools, we'll need to use ls -a instead of ls to see them) then we should edit that file. If not, .profile is probably a safe bet.


No comments:

Post a Comment

Provide your thoughts !