wiki:cypress/PytonInstallPackage

Installing Packages

One of the best things about Python is the number of packages provided by the user community. On a personal machine, the most popular method today for managing these packages is the use of a package manager, like pip. Unfortunately, these require root access and are not a viable solution on Cypress.

There is an easy solution. Any well written Python package will allow the user to perform a "user only installation." This typically only requires the addition of a single flag when installing the package.

As an example, let's install the package Parallel Python (pp). If you wish to follow along, the package can be downloaded here.

When you have the packages tar file in the desired directory, you can unpack it with the tar command

[tulaneID@cypress1 ~]$ tar -xvf pp-1.6.4.tar.gz 
pp-1.6.4/
pp-1.6.4/doc/
pp-1.6.4/doc/ppserver.1
pp-1.6.4/doc/example.config
pp-1.6.4/doc/ppdoc.html
pp-1.6.4/pp.py
pp-1.6.4/README
pp-1.6.4/pptransport.py
pp-1.6.4/PKG-INFO
pp-1.6.4/ppcommon.py
pp-1.6.4/ppserver.py
pp-1.6.4/ppworker.py
pp-1.6.4/CHANGELOG
pp-1.6.4/MANIFEST.in
pp-1.6.4/AUTHORS
pp-1.6.4/ppauto.py
pp-1.6.4/setup.py
pp-1.6.4/examples/
pp-1.6.4/examples/reverse_md5.py
pp-1.6.4/examples/sum_primes_functor.py
pp-1.6.4/examples/auto_diff.py
pp-1.6.4/examples/callback.py
pp-1.6.4/examples/quicksort.py
pp-1.6.4/examples/dynamic_ncpus.py
pp-1.6.4/examples/sum_primes.py
pp-1.6.4/COPYING
[tulaneID@cypress1 ~]$

Now move into the package directory and examine the README file

[tulaneID@cypress1 ~]$ cd pp-1.6.4
[tulaneID@cypress1 pp-1.6.4]$ ls
AUTHORS    COPYING  examples     PKG-INFO   ppcommon.py  ppserver.py     ppworker.py  setup.py
CHANGELOG  doc      MANIFEST.in  ppauto.py  pp.py        pptransport.py  README
[tulaneID@cypress1 pp-1.6.4]$ cat README 
Visit http://www.parallelpython.com for up-to-date documentation, examples and support forums

INSTALATION: 
    python setup.py install

LOCAL DOCUMENTATION:
    <htmlviewer> pydoc.html

After using idev to launch and interactive session,let's try their instructions

[tulaneID@cypress01-035 pp-1.6.4]$ python setup.py install
running install
running build
running build_py
creating build
creating build/lib
copying pp.py -> build/lib
copying ppauto.py -> build/lib
copying ppcommon.py -> build/lib
copying pptransport.py -> build/lib
copying ppworker.py -> build/lib
running build_scripts
creating build/scripts-2.7
copying and adjusting ppserver.py -> build/scripts-2.7
changing mode of build/scripts-2.7/ppserver.py from 644 to 755
running install_lib
copying build/lib/pptransport.py -> /share/apps/anaconda/2.1.0/lib/python2.7/site-packages
error: [Errno 13] Permission denied: '/share/apps/anaconda/2.1.0/lib/python2.7/site-packages/pptransport.py'
[tulaneID@cypress01-035 pp-1.6.4]$ 

Our installation failed because we lack the permissions to add files to the system wide Python installation. But that's not what we want anyway, we just want to install the package for our personal use. We need to add the flag - -prefix=$HOME to tell the installer where to place the package.

[tulaneID@cypress01-035 pp-1.6.4]$ python setup.py install --prefix=$HOME
running install
running build
running build_py
running build_scripts
running install_lib
creating /home/tulaneID/lib
creating /home/tulaneID/lib/python2.7
creating /home/tulaneID/lib/python2.7/site-packages
copying build/lib/pptransport.py -> /home/tulaneID/lib/python2.7/site-packages
copying build/lib/pp.py -> /home/tulaneID/lib/python2.7/site-packages
copying build/lib/ppworker.py -> /home/tulaneID/lib/python2.7/site-packages
copying build/lib/ppcommon.py -> /home/tulaneID/lib/python2.7/site-packages
copying build/lib/ppauto.py -> /home/tulaneID/lib/python2.7/site-packages
byte-compiling /home/tulaneID/lib/python2.7/site-packages/pptransport.py to pptransport.pyc
byte-compiling /home/tulaneID/lib/python2.7/site-packages/pp.py to pp.pyc
byte-compiling /home/tulaneID/lib/python2.7/site-packages/ppworker.py to ppworker.pyc
byte-compiling /home/tulaneID/lib/python2.7/site-packages/ppcommon.py to ppcommon.pyc
byte-compiling /home/tulaneID/lib/python2.7/site-packages/ppauto.py to ppauto.pyc
running install_scripts
copying build/scripts-2.7/ppserver.py -> /home/tulaneID/bin
changing mode of /home/tulaneID/bin/ppserver.py to 755
running install_egg_info
Writing /home/tulaneID/lib/python2.7/site-packages/pp-1.6.4-py2.7.egg-info

We now have our own personal build of parallel python.

[tulaneID@cypress01-035 pp-1.6.4]$ python
Python 2.7.8 |Anaconda 2.1.0 (64-bit)| (default, Aug 21 2014, 18:22:21) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> import pp
>>> pp.version
'1.6.4'
>>> 

Last modified 3 years ago Last modified on Aug 23, 2016 10:23:18 AM