Fetching contributors…
Cannot retrieve contributors at this time
160 lines (94 sloc) 3.89 KB


|project| is a pure Python library. This has various consequences:

  • It can run anywhere Python runs
  • It does not require a C compiler
  • It can run on various implementations of the Python language: CPython, IronPython, Jython and PyPy


|project| does not have any mandatory env requirements. Python-based distribution requirements are installed automatically by pip. However certain features it comes with will require you install certain packages. To simplify installing additional dependencies |project| enables you to specify extras in your requirements (e.g. cherrypy[json,routes_dispatcher,ssl]):

Supported python version

|project| supports Python |min_py_supported| through to |max_py_supported|.


|project| can be easily installed via common Python package managers such as setuptools or pip.

$ easy_install cherrypy
$ pip install cherrypy

You may also get the latest |project| version by grabbing the source code from Github:

$ git clone
$ cd cherrypy
$ python install

Test your installation

|project| comes with a set of simple tutorials that can be executed once you have deployed the package.

$ python -m cherrypy.tutorial.tut01_helloworld

Point your browser at and enjoy the magic.

Once started the above command shows the following logs:

[15/Feb/2014:21:51:22] ENGINE Listening for SIGHUP.
[15/Feb/2014:21:51:22] ENGINE Listening for SIGTERM.
[15/Feb/2014:21:51:22] ENGINE Listening for SIGUSR1.
[15/Feb/2014:21:51:22] ENGINE Bus STARTING
[15/Feb/2014:21:51:22] ENGINE Started monitor thread 'Autoreloader'.
[15/Feb/2014:21:51:22] ENGINE Serving on
[15/Feb/2014:21:51:23] ENGINE Bus STARTED

We will explain what all those lines mean later on, but suffice to know that once you see the last two lines, your server is listening and ready to receive requests.

Run it

During development, the easiest path is to run your application as follow:

$ python

As long as defines a "__main__" section, it will run just fine.


Another way to run the application is through the cherryd script which is installed along side |project|.


This utility command will not concern you if you embed your application with another framework.

Command-Line Options

.. program:: cherryd

.. cmdoption:: -c, --config

   Specify config file(s)

.. cmdoption:: -d

   Run the server as a daemon

.. cmdoption:: -e, --environment

   Apply the given config environment (defaults to None)

.. index:: FastCGI

.. cmdoption:: -f

   Start a :ref:`FastCGI <fastcgi>` server instead of the default HTTP server

.. index:: SCGI

.. cmdoption:: -s

   Start a SCGI server instead of the default HTTP server

.. cmdoption:: -i, --import

   Specify modules to import

.. index:: PID file

.. cmdoption:: -p, --pidfile

   Store the process id in the given file (defaults to None)

.. cmdoption:: -P, --Path

   Add the given paths to sys.path