pip install pyblue==2019.4.2


Welcome to PyBlue

A simple static site generator.

Why another one static generator?

There are so many static site generators already.

Alas I found most options to be way too complicated. Each has many conventions and rules: put this here put that there, call it this or that. It was too tiring to keep up.

Then as I was developing courses over the years I found that I could not easily reorganize the site, the links would all break when I moved files around. Very annoying.

Then when I wanted to do something complicated like running a piece of code while generating the site the tools could not do it.

At some point I though I guess I'll just have to roll my own, and I did, and here it is.

PyBlue is different. Everything is optional, nothing is required, use only what you need. It basically stays out of the way.

Simple things are very easy:

  • No configuration required.
  • Works with any existing site.
  • Easy to include markdown.
  • Easy linking to other pages.
  • Tiny codebase, pyblue is around 500 lines in a single file!

Complicated tasks are easy:

  • PyBlue generates the correct links even if you move pages around.
  • Use Django Templates and all the features that it offers.
  • Easily add data into each page (title, link name, or any arbitrary content).

And you can go all the way out if you really want to:

  • Load python modules into each page.
  • Exposed data: database queries, results of online requests etc.
  • Run python code, access and modify data from inside of each page.
  • Extend the Django templates. Add your own templatetags.


You can also browse the help in source format for examples.


pip install pyblue --upgrade

Or download it from the PyBlue at PyPI.


Launch pyblue to serve a directory

pyblue -r docs

View your site by visiting http:://localhost:8080

Edit your pages and make changes. Reload the page to see your edits live. Generate static output with:

pyblue -r docs -o html

That's all. Told you it was simple. To see extra help on options run:

pyblue -h