ipm
Ignition Package Maker - convert script-python modules into publishable Python packages.
jython
ignition
ipm
pip install ipm
# Install
$
pip install ignition-package-maker
$ ipm init
Discovered modules: foomes
Created ipm.json
$ ipm build
Building foomes@0.1.0
foomes/ (20 modules)
Built foomes@0.1.0
$ cd ipm/foomes && python -m build
$ twine upload dist/*
$ pip install --target ./site-packages foomes
# How it works
ipm converts Ignition's code.py convention into standard Python modules.
Ignition project
script-python/
foomes/
workorders/
code.py
resource.json
alarms/
code.py
resource.json
reporting/
code.py
resource.json
→
Python package
src/
foomes/
__init__.py
workorders.py
alarms.py
reporting.py
pyproject.toml
# Getting started
A minimal setup with Docker Compose to develop and test Ignition packages locally.
services:
ignition:
image: inductiveautomation/ignition:latest
ports:
- "8088:8088"
environment:
ACCEPT_IGNITION_EULA: "Y"
IGNITION_EDITION: standard
GATEWAY_ADMIN_USERNAME: admin
GATEWAY_ADMIN_PASSWORD: password
volumes:
- ./ignition:/usr/local/bin/ignition/data/projects
- ./site-packages:/usr/local/bin/ignition/user-lib/pylib/site-packages
- ignition-data:/usr/local/bin/ignition/data
volumes:
ignition-data:
Set up your project
Create the directory structure and start the gateway.
$ mkdir -p ignition site-packages
$ docker compose up -d
Install packages
Use pip to install ipm packages into your site-packages directory.
$ pip install --target ./site-packages foomes
Freeze requirements
Lock your installed packages so others can reproduce the environment.
$ pip freeze --path ./site-packages > requirements.txt
$ pip install --target ./site-packages -r requirements.txt
Publish your own packages
Initialize ipm in your Ignition project and build a distributable package.
$ pip install ipm
$ ipm init
$ ipm build
$ cd ipm/foomes && python -m build && twine upload dist/*
# Features
Zero config discovery
Auto-detects Ignition projects and script-python modules. Just run ipm init.
Multi-package repos
Define multiple packages from one repo. Build all at once or target a specific one.
Simple Config
Configuration is a basic map between your ignition scripts and packages.
pip does the rest
No custom registry. Publish to PyPI, install with pip. Version resolution, lockfiles, uninstall - all built in.
Ignition First
Include system.* and any other Ignition native functionality.
Non-intrusive
Your Ignition project stays unchanged. ipm only reads your scripts and outputs a separate package.
# Configuration
{
"projects": {
"global": "ignition/global/ignition/script-python"
},
"packages": {
"foomes": {
"source": "global",
"exports": ["foomes"]
}
}
}
Version, description, dependencies, and license live in pyproject.toml (created on first build).