Pwyky (A Python Wiki)

Pwyky is a ~30KB single file wiki in Python. It's very easy to install, requires minimal configuration, and uses a simple structured text format. It's free software: released under a GPL 2 licence. There's a fully functional version online for you to try.

Getting and Installing Pwyky

Requirements: Apache, and Python 2.3+.

To install:

Important: you must visit the path with the full file name the first time around, so that it can install itself. From then on, visiting http://yourserver.tld/directory/ will work. As soon as you visit it, it should be fully installed and ready to use!

About: Background, and Features

A wiki is a program, often a CGI, which enables you to edit a website using an HTML form. You can limit the editing priviliges to a single or group of users, or let anyone in the world edit it.

Pwyky was written by Sean B. Palmer, the same guy who wrote wypy, the 18-line Python wiki. After writing one of the world's smallest wikis, he decided to write a proper wiki.

The features that pwyky has are:

The requirements were:

One of the main features of a wiki that gives it its character is the nature of its structured text syntax...

The Syntax



@ Heading


* Bulleted list.
* Bullets can extend over
two lines.
* Third item in the list.

Preformattted area.

A quote
]]] -

Links: {LocalLink} will link to ./LocalLink, {Local Link} will 
link to the same, and {} will be a 
titled link to

Formatting: Hints and Tips


In paragraphs, headings, and list items:

In preformatted sections, and blockquotes:


Configuration is achieved through a config.txt in the pwyky folder; if the file isn't present, then pwyky will use its own defaults. The syntax is that of RFC 822 message headers; field name, colon, space, entry.

The config file needn't have all fields; you can just have the fields for which you want to override the defaults. For example:

sname: notes
lname: my notes
pedit: False
owner: <a href="">Person's Name</a>
logdir: /home/person/web

Other: Using Pwyky

You can use the following bookmarklet to edit your pages if you don't have public editing links enabled: javascript:void(location = document.location.href.replace(/\/([A-Za-z0-9-]+)$/, '/@edit/$1').replace(/\/$/, '/@edit/index'))


Send comments to the author, Sean B. Palmer.

Sean B. Palmer