Setting Up Your Own Python on a Computer
Mar 23, 19 pythonI can’t count the times that I’ve gotten access to a shared memory server with an out of date version of CentOS and Python 2.7 as the only python installation. Okay, actually, I can and it’s been eight times. The same goes for getting a new laptop or computer that you use personally and realizing that you don’t want to mess with the local python installation that the operating system is dependent on. I finally have decided to write my authoritative guide to setting up your own python installation on the computer of your choice.
Getting Python
We’re past Python 3.7.1, but I still prefer to stick with the tried and true Python 3.5 version. I have found a lot of science modules are not exactly on the cutting edge either, so this ensures compatibility. The first thing you need to do is download the Python file from the Python Software Foundation and uncompress it:
wget https://www.python.org/ftp/python/3.5.7/Python-3.5.7.tar.xz
tar -xvf Python-3.5.7.tar.xz
This is going to uncompress all the Python files in a directory named Python-3.5.7
. We should rename this directory and stick it somewhere that it will not interfere or be interfered with. I like to use the /usr/local/mypython
directory, but it’s your call on where to go. Assuming you have the name, you will need to actually move and rename it:
mv Python-3.5.7 /usr/local/mypython
cd /usr/local/mypython
Installing Your Master Python
Now we can begin. We want to install all of the custom python files in this directory–again so that it doesn’t interefere with things–so we decide to add a built
subdirectory. We need to specify this when we configure the makefile for installation using the prefix
flag.
mkdir built/
./configure --prefix=/usr/local/mypython/built
It is time to compile our files. Once you issue this command, it is a good time to put the kettle on or start a load of laundry.
make
The last step is much shorter. We have compiled the files and now we need to copy them to our installation directory.
make install
If you navigate to /usr/local/mypython/built/bin
, you should now see your own set of pythons!
Installing Your Python Environment
You may or may not have noticed that I used “Master Python” in the prior section. This is because I like to configure my Python that I am using for coding to be different than my master or template Python installation. This will help me in case I install a bad package, I want to experiment with possibly new modules, or there may be multiple users wanting to share this one python.
Python provides a nice tool for this called virtual environments. When you use this utility, it essentially copies all of the files necessary to run python to the directory of your choice–creating a clone of the master python that you can do with whatever you want. I prefer to have my working environment in the base of my home directory structure, but you could put it wherever you want again.
/usr/local/mypython/built/bin/python3 -m venv ~/venv
You will see that Python now installed in your home directory.
Setting Your Path
While you personally know these files are here, your computer is not as wise. You need to let your computer know where this python is. You can do this in a few ways: update your
python path, update your bash path, or set up an alias. I prefer to update the bash path because, as you will see in that folder of binaries, there are other utilities that come
with python we will be using. To do this, open a text editor for the file ~/.bash_profile and include this string somewhere near the end (make sure it appears before any export $PATH
statements):
PATH=~/venv/bin:${PATH}
This command redefines the PATH
variable for bash to include first our custom python followed by all the other locations in the PATH
variable prior to our definition. (Note that paths are separated by a colon “:” in the path syntax.) Make sure you activate your profile file so that it takes effect immediately:
. ~/.bash_profile
Installing Your Modules
Now you are ready to install whatever modules you need. It is beyond the scope of this tutorial to handle library compilation if needed, but pip provides an easy interface to the Python package directory, where many modules are compiled to include libraries needed. In any case, you can use pip to install whichever modules you desire; just first make sure you activated your profile above by verifying the location of the pip executable
which pip
$ ~/venv/bin/pip
pip install matplotlib numpy scipy
Closing
You have now successfully built Python 3.5 from source, installed it to a custom location, created a virtual environment in your home directory, and installed modules within that virtual environment. Congratulations! (And no sysadmin was required!)