# From an OS package

Python-evdev has been packaged for the following distributions:

See Repology’s version information.

Consult the documentation of your OS package manager for installation instructions.

# From source

The latest stable version of python-evdev can be installed from pypi, provided that you have a compiler, pip and the Python and Linux development headers installed on your system. Installing these is distribution specific and typically falls into one of the following:

On a Debian compatible OS:

    $ apt install python-dev python-pip gcc
    $ apt install linux-headers-$(uname -r)

On a Redhat compatible OS:

    $ dnf install python-devel python-pip gcc
    $ dnf install kernel-headers-$(uname -r)

On Arch Linux and derivatives:

    $ pacman -S core/linux-api-headers python-pip gcc

Once all OS dependencies are available, you may install python-evdev using pip, preferably in a [virtualenv]:

    # Install globally (not recommended).
    $ sudo python3 -m pip install evdev

    # Install for the current user.
    $ python3 -m pip install --user evdev

    # Install in a virtual environment.
    $ python3 -m venv abc
    $ source abc/bin/activate
    $ python3 -m pip install evdev

## Specifying header locations

By default, the setup script will look for the `input.h` and `input-event-codes.h` [1] header files `/usr/include/linux`.

You may use the `--evdev-headers` option to the `build_ext` setuptools command to the location of these header files. It accepts one or more colon-separated paths. For example:

    $ python setup.py build_ext \
        --evdev-headers buildroot/input.h:buildroot/input-event-codes.h \
        --include-dirs  buildroot/ \
        install  # or any other command (e.g. develop, bdist, bdist_wheel)

# From a binary package

You may choose to install a precompiled version of python-evdev from pypi. The evdev-binary package provides binary wheels that have been compiled on EL8 against the 4.18.0 kernel headers.

    $ python3 -m pip install evdev-binary

While the evdev interface is stable, the precompiled version may not be fully compatible or expose all the features of your running kernel. For best results, it is recommended to use an OS package or to install from source.

[1]

`input-event-codes.h` is found only in recent kernel versions.