Installation

Boxes.py is a pure Python project that does support the regular setuptools method of shipping with setup.py. setup.py --help-commands and setup.py CMD --help provide the necessary documentation for building, installing or building binary formats.

Requirements

Cairo

Boxes.py is based on the cairo graphics library. It supports both the PyPi version cairocffi and python-cairo that might be shipped with your distribution.

Markdown

Markdown (package name may be python-markdown or python3-markdown) is used to format the description texts.

LXML

lxml (package name may be python-lxml or python3-lxml) is needed for the Inkscape plugin.

setuptools

Setup.py uses the setuptools library (package name may be python*-setuptools). You only need it if you want to build the package.

ps2edit

While not a hard requirement Boxes.py uses ps2edit to offer formats that are not supported by Cairo: DXF, gcode, PLT. Currently the location Boxes.py looks for ps2edit is hard coded to /usr/bin/pstoedit in the boxes.formats.Formats class.

Python

Boxes.py is implemented in Python 3. It used to work on Python 2.7, too. But with the Python 2 approaching end of life support has been dropped.

Sphinx

For building the documentation locally you need the Sphinx documentation generator (package name may be python-sphinx or python3-sphinx). It is not needed for anything else. Boxes.py can be run and changed just fine without.

Running from working dir

Due to lazy developer(s) Boxes.py can also run from the Git checkout. The scripts in scripts/ are all suppossed to just work right after git clone. The Inkscape needs a bit manual work to get running. See below.

Inkscape

As binary

Boxes.py can be used as a set of Inkscape plugins. The package does install the necessary .inx files to /usr/share/inkscape/extensions on unix operating systems. The .inx files assume that the boxes executable is available in the path (which it is when installing the binary package)

git repository easy way

After cloning it may be most convenient to generate the .inx files right in place by executing scripts/boxes2inkscape with the taget path as only parameter.

  • global: scripts/boxes2inkscape /usr/share/inkscape/extensions/

  • userspace: scripts/boxes2inkscape ~/.config/inkscape/extensions/

On non unix operating the target directories may differ. You can look up the directories “User extensions” and “Inkscape extensions” within the Inkscape preferences Edit -> Preferences… -> System.

git repository manual way

setup.py build creates the *.inx files in the inkex/ directory.

They then have to be copied in either the global or the per user extension directory of Inkscape. These are /usr/share/inkscape/extensions/ and ~/.config/inkscape/extensions/ on a unix operating system. On non unix operating the target directories may differ. You can look up the directories “User extensions” and “Inkscape extensions” within the Inkscape preferences Edit -> Preferences… -> System.

As an alternative you can create a symlink to the inkex/ directory within the desired inkscape extension directory.