views:

68

answers:

4

Consider a website build using python and django. In many cases it uses 3rd party modules beside standard python library - such as pytz, South, timezones or debug toolbar.

What is standard or just convenient way to deploy such application to production hosting with all the prerequisites (timezones, etc) installed automatically?

I'm new to python, and sorry if this question is lame.

A: 

take a look at fabric.

Christopher Mahan
+1  A: 

You can either use a deployment solution like fabric (http://fabfile.org/) or you can try to package the entire thing up into a python egg with dependencies that will be automatically installed when you easy_install it. See http://mxm-mad-science.blogspot.com/2008/02/python-eggs-simple-introduction.html for a simple introduction to python eggs.

dave paola
+2  A: 

Fabric is definitely a nice way to accomplish this. There is a fairly extensive blog write up on the process at http://www.caktusgroup.com/blog/2010/04/22/basic-django-deployment-with-virtualenv-fabric-pip-and-rsync/.

The key to fabric is "fabfile.py" - there's an example of one that does a deployment at http://bitbucket.org/copelco/caktus-deployment/src/tip/example-django-project/caktus_website/fabfile.py.

The variation of this that I've used to deploy to a Linode instance is http://gist.github.com/556508

heckj
+3  A: 

There are at least two options available. Jacob Kaplan-Moss, one of the co founders of Django has written about packaging an application using buildout and djangorecipe. There is also the versatile fabric. You should be able to tackle your problem using either of these alone or in combination with some custom scripts.

Manoj Govindan
Thank you for the links. It seems fabric will solve my problems, and I will check out that buildout can do as well.
Dmitry Guyvoronsky