IMMP uses the latest and greatest Python features (that is, native
await syntax and
asynchronous generators), and therefore requires at least Python 3.6.
Install the core module from PyPI:
$ pip install immp
This only pulls in the core requirements; it doesn’t include dependencies for most plugs and hooks, see below for how to obtain them.
From the repo#
Check out a copy of the repository from GitHub:
$ git clone firstname.lastname@example.org:Terrance/IMMP.git
$ cd IMMP
Then install IMMP as a link to the checkout:
$ pip install -e .
If you don’t intend to work on the code and just want the bleeding edge, you can alternatively install with pip directly:
$ pip install git+https://github.com/Terrance/IMMP.git
For Python library dependencies, review the Python requirements to see what each plug and hook needs.
The setup script defines a number of extras which can be used to pull in one or more categories of requirements:
$ pip install immp[runner,uv,db,web,webui,console,sync,discord,hangouts,slack,telegram]
If installed from the repo, replace
. as above to use the current directory.
Alternatively, you can just install all possible dependencies with the included requirements file:
$ pip install -r requirements.txt
A Dockerfile is included in the repo, and an image can be built using the standard commands (here assuming you have configured Docker to accept commands from non-root users):
$ docker build . --tag immp
To run it, you need to bind a config file to
/data/config.yaml. If you need auxiliary files,
you can bind-mount the entire
/data directory to provide them from the host:
$ docker run --mount type=bind,source=/var/lib/immp,target=/data immp
IMMP will be run using
/data as its working directory, so you can reference other files from
your config without needing to specify the full path. This will run without the
-w flag, so
config changes will not be written back on exit – override the command if you need this.
Note that Docker mounts don’t allow changing the owner or group, and will default to UID/GID 1000.
This means the files on the host must be writeable by UID 1000, or be world-writeable. If your
host owner or group is different, you can set the
gid build args to match:
$ docker build --build-arg uid=1002 --build-arg gid=1001 . --tag immp