== 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 [http://www.parallelpython.com/content/view/18/32/ 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: 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' >>> }}}