Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Assembles WAR files from Python (Jython) WSGI applications

Project Description


snakefight generates WAR files from Python (Jython) WSGI applications, suitable for deployment to Java Servlet containers.


snakefight requires at least Jython 2.5b2. To install:

$ easy_install snakefight

Creating WAR files

snakefight provides a new distutils command: bdist_war.

To create a WAR file, create a web.xml deployment descriptor (which would typically utilize the modjy library for the actual Servlet) and run:

$ jython bdist_war --web-xml web.xml

snakefight can automatically generate a web.xml (utilizing modjy) for Paste style projects (those that support the paste.app_factory entry point), by specifying the --paste-config option. To specify a named app in the config file, use the --paste-app-name option (which defaults to main):

$ jython bdist_war --paste-config production.ini --paste-app-name cascade

To include separate .jar files in the WAR’s WEB-INF/lib directory, specify a comma separated list of jars to the --include-jars option:

$ jython bdist_war --include-jars jasper-runtime-5.5.9.jar,lucene-core-2.4.jar \
> --web-xml web.xml

As with any distutils command the options may also be specified in the project’s setup.cfg:

paste-config = production.ini
include-jars = jasper-runtime-5.5.9.jar

snakefight can also be ran from CPython (at least version 2.5) as long as a JYTHON_HOME is specified:

$ jython bdist_war --web-xml web.xml --jython-home=~/jython2.5b2

Other options:

  • --war-prefix Prefix of the war file to build
  • --no-jython Don’t include the Jython distribution


Add options for:

  • exclude-requires: exclude certain eggs from inclusion
  • static_files: list of directories to serve public files (through the faster org.jruby.webapp.FileServlet)
  • specifying modjy options
  • –unpacked: don’t zip the war file


  • non setuptools apps? (like Django apps) django-jython already handles Django but ideally we’d share code


0.5 (2011-12-10)

  • Fixed installation via pip.

0.4 (2009-07-15)

  • Reorder the auto-generated web.xml child tags for better validation.
  • Use the actual distribution name (not the egg safe name) for the WAR filename.
  • Close the war file handle before moving it, particularly for Windows.

0.3 (2009-03-13)

  • Added the --include-jars option

0.2 (2009-03-10)

  • easy_install’ing the app is now the first step

0.1 (2009-03-08)

  • Initial release

Release History

This version
History Node


History Node


History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Hash SHA256 Hash Help Version File Type Upload Date
(12.3 kB) Copy SHA256 Hash SHA256
2.5 Egg Dec 10, 2011
(12.3 kB) Copy SHA256 Hash SHA256
2.6 Egg Dec 10, 2011
(10.4 kB) Copy SHA256 Hash SHA256
Source Dec 10, 2011

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting