Python Deployment
**This document is still a scratch**
Python Deployment
=================
Setup A Workplace
-----------------
You’ll want a directory to do this in so that you don’t screw up your machine.
Here’s what I did::
$ cd ~/
$ mkdir -p Envs/Python && cd Envs/Python
$ export DEPLOY=$PWD
That last bit is so you can refer to this deployment directory with ``$DEPLOY``
(which I’ll be using in the instructions from now on).
Get Python
----------
You’ll probably want to get 2.7 for your deployment, let's download the source code first::
$ cd /tmp
$ wget http://python.org/ftp/python/2.7.4/Python-2.7.4.tgz
Install Dependences
-------------------
Type this command to automatically install some dependences::
$ sudo apt-get build-dep python2.7
Make sure you bring in other -dev packages that are listed in follow:
- python-dev
- libncurses5-dev
- libsqlite3-dev
- libbz2-dev
- libreadline-dev
- libdb4.8-dev
- tcl8.5-dev,tk8.5-dev
These packages are not shipped in early ubuntu versions (like 10.04), do a check to make sure:
- libssl-dev
- libexpat1-dev
- libreadline6-dev
- libgtk2.0-dev
For ``lxml`` if you want to install it later:
- libxml2-dev
- libxslt1-dev
For ``MySQLdb`` (which is acturally named *MySQL-python* in pypi) if you want to install it later
- libmysqlclient-dev
.. seems no need
- libboost-dev
The final result of ``./configure --prefix=$DEPLOY`` may looks like follows: ::
Python build finished, but the necessary bits to build these modules were not found:
_tkinter bsddb185 dl
gdbm imageop sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
It will show you the modules that can not be build, note that some of them are unnecessary or deprecated:
- bsddb185: Older version of Oracle Berkeley DB. Undocumented. Install version 4.8 instead.
- dl: For 32-bit machines. Deprecated. Use ctypes instead.
- imageop: For 32-bit machines. Deprecated. Use PIL instead.
- sunaudiodev: For Sun hardware. Deprecated.
- _tkinter: For tkinter graphy library, unnecessary if you don't develop tkinter programs.
Make Install Python
-------------------
::
$ tar -xvf Python-2.7.4.tgz
$ cd Python-2.7.4
$ ./configure —prefix=$DEPLOY
$ make
$ make install
After this you will have a bunch of new directories in $DEPLOY::
$ ls $DEPLOY
bin include lib share source
Let's make a test by put this new bin directory into your $PATH::
$ export PATH=$DEPLOY/bin:$PATH
then you just try it out to make sure that you have the right one::
$ which python
$DEPLOY/deploy/bin/python
$ python
Python 2.7.4 (default, Nov 27 2012, 22:30:50)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
*Operating system fanatics will scoff at putting the python install in this
directory, so if you want you can just install it to the default /usr/local on
your system and deal with all the various clashes and conflicts you’ll have,
especially if you are on an MacOSX machine.*
Install virtualenv and virtualenvwrapper
----------------------------------------
http://www.virtualenv.org/en/latest/
http://virtualenvwrapper.readthedocs.org/en/latest/
Now we need to create a “virtual environment” to install all your software. To
do this we’ll need easy_install installed to your $DEPLOY directory::
wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea
sh setuptools-0.6c11-py2.7.egg
...
or (the latest)::
wget https://bitbucket.org/pypa/setuptools/raw/0.8/ez_setup.py -O - | python
Note:
if path in output information is not match with $DEPLOY,
add ``--prefix=$DEPLOY`` after the command
Install ``pip``::
easy_install pip
As you can see, you now have a clean install of easy_install in your fresh
$DEPLOY/bin directory for you to use. Now you need to install virtualenv::
$ pip install virtualenv
$ which virtualenv
$DEPLOY/bin/virtualenv
*Make sure you use --prefix $DEPLOY above or you’ll install things into
the default system setup even though easy_install is clearly and obviously
running from a Python in a totally different location so easy_install should
know that.*
::
$ pip install virtualenvwrapper
if you follow the step of kubuntu_deployment_for_pc.rst
the installaion is done.
if not, you should add some configurations in shell environment,
paste the following code to your ``.zshrc`` or ``.bashrc``::
export PYTHONENV=$HOME/Envs/Python
export PYTHONSTARTUP=$HOME/.pystartup
# for virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=$PYTHONENV/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=$PYTHONENV/bin/virtualenv
export WORKON_HOME=$PYTHONENV/virtualenvs
export PROJECT_HOME=$HOME/workspace/current
source $PYTHONENV/bin/virtualenvwrapper.sh
restart your shell, now following commands are avaliable, test arould::
$ mkvirtualenv TORNADO
$ pip install tornado
$ cdsitepackages
Tools
-----
These tools should work under system python environment,
so let's make easy_install and pip available in normal situation::
$ sudo sh setuptools-0.6c11-py2.7.egg
$ sudo easy_install pip
ipython
ipython is a full-stack python shell, for a quick install you can just::
$ sudo apt-get install ipython ipython-notebook ipython-qtconsole
bpython
autopep8
flake8
pip-tools
References
----------
http://www.kelvinwong.ca/2010/08/02/python-2-7-on-dreamhost/
http://lamsonproject.org/docs/deploying_lamson.html