Install multiple Grok apps using zc.buildout¶
Author: | unknow |
---|
Grok is packaged as Python eggs. zc.buildout is a tool for managing these eggs, and let’s you quickly try out or develop a Grok-based project.
Might be outdated! This document hasn’t been reviewed for Grok 1.0 and may be outdated. If you would like to review the document, please read this post.
Before you start¶
You will need a clean installation of Python 2.6 (or 2.5) to use. You can either build your own Python from source, or use an existing system Python install and isolate yourself from any system-wide packages using VirtualEnv.
Install a Grok application using zc.buildout¶
Almost all Grok applications are developed using zc.buildout. You will know if a Grok application has been developed using zc.buildout if you see a file named buildout.cfg
at the top level of a project’s development directory.
If you see a buildout.cfg
file you will also often see a scripot named bootstrap.py
or a directory named bootstrap
with this file in it. If you don’t find this program you can download a copy.
Let’s walk through the process of installing the Adder application.
$ svn co svn://svn.zope.org/repos/main/grokapps/Adder Adder
...
$ cd Adder
$ python bootstrap.py
...
$ ./bin/buildout
$ ./bin/zopectl fg
That’s it! You should have a complete, running Grok application with just five commands.
Sharing Eggs: Installing multiple Grok applications¶
Grok requires quite a few Python eggs to be installed. Every Grok application that you try out will require a complete set of eggs to be downloaded over the internet. This can be quite time consuming and takes up disk space. Fortunately, zc.buildout can be configured to put all of the eggs in a common shared directory. When you install your second Grok application using a shared eggs directory it will install very quickly. Running ./bin/buildout
to install a new Grok application on a modern computer should only take about five seconds.
To tell zc.buildout that you would like it to use a shared eggs directory, you will need to create a file called default.cfg
in the top level of your home directory inside a directory named .buildout
. Then you will need to add this text to the file:
[buildout]
eggs-directory = <path-to-shared-eggs>
This path can be to anywhere on your system, the default for grokproject is to use a directory named <your-home-directory>/buildout-eggs
, but you can place this anywhere you like.
Faster, buildout, faster!¶
You can increase the speed of running buildout a little bit more by adding two more options to your ~/.buildout/default.cfg
file. The download-cache
option will tell buildout to cache the files it downloads from the internet before unpacking them into your eggs directory. The newest
option can tell buildout that upon subsequent reruns of the ./bin/buildout
command not to use the internet to automatically check for and fetch the newest versions of eggs.
Your final buildout file may look something like this:
[buildout]
newest = false
eggs-directory = /Users/kteague/buildouts/shared/eggs
download-cache = /Users/kteague/buildouts/shared/cache
Keeping bootstrap.py close at hand¶
If you work frequently with zc.buildout, you may find it handy to keep a single copy of bootstrap.py
at hand. You can place this file somewhere on your system, and then on UNIX-like systems create a shell alias to allow you to quickly run bootstrap with your current development version of Python. Place a line such as the following in your shell profile (this is found at ~/.bashrc
on Linux, or ~/.profile
on Mac OS X):
alias bootit="/Users/kteague/buildouts/shared/python-2.6.0/bin/python \
/Users/kteague/buildouts/shared/bootstrap.py"
see also:¶
Using Virtualenv for a clean Grok installation
NOTE: As of Grok 1.2, you do not need to use virtualenv. Grok is automatically isolated from the system python environment.