Pycairo is a Python module providing bindings for the cairo graphics library. It depends on cairo >= 1.13.1 and works with Python 2.7+ as well as Python 3.3+. Pycairo, including this documentation, is licensed under the LGPLv2.1 as well as the MPLv1.1.

The Pycairo bindings are designed to match the cairo C API as closely as possible, and to deviate only in cases which are clearly better implemented in a more ‘Pythonic’ way.

Features of the Pycairo bindings:

- Provides an object oriented interface to cairo.

- Queries the error status of objects and translates them to exceptions.

- Provides a C API that can be used by other Python extensions.

    import cairo

    surface = cairo.SVGSurface("example.svg", 200, 200)
    context = cairo.Context(surface)
    x, y, x1, y1 = 0.1, 0.5, 0.4, 0.9
    x2, y2, x3, y3 = 0.6, 0.1, 0.9, 0.5
    context.scale(200, 200)
    context.set_line_width(0.04)
    context.move_to(x, y)
    context.curve_to(x1, y1, x2, y2, x3, y3)
    context.stroke()
    context.set_source_rgba(1, 0.2, 0.2, 0.6)
    context.set_line_width(0.02)
    context.move_to(x, y)
    context.line_to(x1, y1)
    context.move_to(x2, y2)
    context.line_to(x3, y3)
    context.stroke()
    surface.finish()

If Pycairo is not what you need, have a look at cairocffi, which is an API compatible package using cffi or Qahirah, which is using ctypes and provides a more “pythonic” API with less focus on matching the cairo C API.

For more information visit https://pycairo.readthedocs.io

Tarballs:

  https://github.com/pygobject/pycairo/releases

Git repo:

  https://github.com/pygobject/pycairo

Bug tracker:

  https://github.com/pygobject/pycairo/issues

Mailing list:

  https://lists.cairographics.org/cgi-bin/mailman/listinfo/cairo

See the “API Reference” for further details.

To use the pycairo library:

    import cairo

To build/install the library:

    python2/3 setup.py build
    python2/3 setup.py install

To run the tests:

    python2/3 setup.py test

The Python 2 version supports xpyb integration which is disabled by default. To enable, build as follows:

    python2 setup.py build --enable-xpyb
    # and for running tests:
    python2 setup.py test --enable-xpyb

For examples of pycairo code see the ‘examples’ directory that comes with the pycairo distribution.

For author information see the git history as well as the now deleted “ChangeLog” file in the git history.