It is recommended to use Homebrew to install the dependencies for See on how to install Homebrew.


  1. Install Python 3 and other dependencies:

    brew install python3 git


    brew install pstoedit
  2. Install cairio:

brew install pkg-config
  1. Install required Python modules:

    pip3 install Markdown affine shapely
  2. Download via Git:

    git clone
  3. Run

    Local web server on port 8000:


    Command line variant (CLI):


System-wide with Inkscape extension

To install system-wide with the Inkscape extension, following steps are required:

  1. Install Inkscape with Homebrew Cask (requires XQuartz):

    brew install inkscape
  2. From the root directory of the repository, run:

    ./ install
  3. Now boxes and boxesserver can be executed like other commands and the Inkscape extension should be available.


When using the Inkscape extension something like the following error might occur:

Traceback (most recent call last):
  File "/Users/martin/.config/inkscape/extensions/boxes", line 107, in <module>
  File "/Users/martin/.config/inkscape/extensions/boxes", line 47, in main
    run_generator(name, sys.argv[2:])
  File "/Users/martin/.config/inkscape/extensions/boxes", line 73, in run_generator
  File "/usr/local/lib/python3.7/site-packages/boxes-0.1-py3.7.egg/boxes/", line 594, in close
    svgutil.svgMerge(self.output, self.inkscapefile, out)
  File "/usr/local/lib/python3.7/site-packages/boxes-0.1-py3.7.egg/boxes/", line 144, in svgMerge
    from lxml import etree as et
ImportError: dlopen(/Applications/, 2): Symbol not found: _PyBaseString_Type
  Referenced from: /Applications/
  Expected in: flat namespace

This is because Inkscape on macOS ships its own version of Python 2.7 where lxml and other dependencies are missing.

A workaround is to edit the file at /Applications/ At line 79 there should be following code:

export PYTHONPATH="$TOP/lib/python$PYTHON_VERS/site-packages/"

which needs to be changed to

#export PYTHONPATH="$TOP/lib/python$PYTHON_VERS/site-packages/"

This forces Inkscape to use the Python version installed by Homebrew which has all the necessary dependencies installed.

Note: This might break other extensions. In this case simply change the line back and restart Inkscape.