Quick search

Installation on Linux

To install Kivy on Linux using pip, please follow the main installation guide. Otherwise, continue to the PPA instructions below.

Installation components

Following, are additional information linked to from some of the steps in the main pip installation guide, specific to Linux.

Installing Python

Python and python-pip must be installed from the package manager:


Using apt:

sudo apt-get install -y \
    python3-pip \
    build-essential \
    git \
    python3 \
    python3-dev \


You will likely need to do this preliminary step which installs the rpmfusion-free repository unless you have some other 3rd-party repo installed which has the required packages. See for complete installation instructions, but only the rpmfusion-free repo is needed for acquiring kivy dependencies (though rpmfusion-nonfree is recommended by rpm fusion installation instructions) as shown in this step.

Using dnf:

<<<<<<< HEAD
  1. Download the appropriate wheel for your Python version.

  2. Install it as above but with pip install wheel-name where wheel-name is the name of the file, instead.

After you ensure that a 3rd-party repository containing any packages that dnf is otherwise unable to find, continue installing dependencies:

sudo dnf install -y python3-devel

Source installation Dependencies

To install Kivy from source, please follow the installation guide until you reach the Kivy install step and then install the dependencies below before continuing. Additionally, if you’d like to be able to use the x11 window backend do:

<<<<<<< HEAD

Using software packages (PPA etc.)

>>>>>>> master

Using apt:

# Install necessary system packages
sudo apt-get install -y \
    libsdl2-dev \
    libsdl2-image-dev \
    libsdl2-mixer-dev \
    libsdl2-ttf-dev \
    libportmidi-dev \
    libswscale-dev \
    libavformat-dev \
    libavcodec-dev \

# Install gstreamer for audio, video (optional)
sudo apt-get install -y \
    libgstreamer1.0 \
    gstreamer1.0-plugins-base \

Using dnf:

# Install necessary system packages
sudo dnf install -y ffmpeg-libs SDL2-devel SDL2_image-devel SDL2_mixer-devel \
SDL2_ttf-devel portmidi-devel libavdevice libavc1394-devel zlibrary-devel ccache \
mesa-libGL mesa-libGL-devel
# Install xclip in case you run a kivy app using your computer, and the app requires a CutBuffer provider:
sudo dnf install -y xclip

# In case you get the following error preventing kivy install:
#  annobin: _event.c: Error: plugin built for compiler version (8.0.1) but run with compiler version (8.1.1)
#  cc1: error: fail to initialize plugin /usr/lib/gcc/86_64-redhat-linux/8/plugin/
# This has been resolved in later updates after the on-disk release of Fedora 28, so upgrade your packages:
#  sudo dnf -y upgrade

Using software packages (PPA etc.)

Ubuntu / Kubuntu / Xubuntu / Lubuntu (Saucy and above) <<<<<<< HEAD ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ======= ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>>>>>> master

  1. Add one of the PPAs as you prefer

    stable builds

    $ sudo add-apt-repository ppa:kivy-team/kivy

    nightly builds

    $ sudo add-apt-repository ppa:kivy-team/kivy-daily

  2. Update your package list using your package manager

    $ sudo apt-get update

  3. Install Kivy

    Python3 - python3-kivy

    $ sudo apt-get install python3-kivy

    optionally the gallery of Examples - kivy-examples

    $ sudo apt-get install kivy-examples

  1. Add one of the PPAs to your sources.list in apt manually or via Synaptic

    stable builds

    deb xenial main

    daily builds

    deb xenial main

    Notice: Wheezy is not supported - You’ll need to upgrade to Jessie at least!

  2. Add the GPG key to your apt keyring by executing

    as user:

    sudo apt-key adv --keyserver --recv-keys A863D2D6

    as root:

    apt-key adv --keyserver --recv-keys A863D2D6

  3. Refresh your package list and install python-kivy and/or python3-kivy and optionally the examples found in kivy-examples

  1. Find out on which Ubuntu release your installation is based on, using this overview.

  2. Continue as described for Ubuntu above, depending on which version your installation is based on.

  1. Find out which version of the distribution you are running and use the table below to find out on which Ubuntu LTS it is based.

    Bodhi 1

    Ubuntu 10.04 LTS aka Lucid (No packages, just manual install)

    Bodhi 2

    Ubuntu 12.04 LTS aka Precise

    Bodhi 3

    Ubuntu 14.04 LTS aka Trusty

    Bodhi 4

    Ubuntu 16.04 LTS aka Xenial

  1. Continue as described for Ubuntu above, depending on which version your installation is based on.

  1. To install kivy go to and use the “1 Click Install” for your openSuse version. You might need to make the latest kivy version appear in the list by clicking on “Show unstable packages”. We prefer to use packages by ” devel:languages:python”.

  2. If you would like access to the examples, please select python-Kivy-examples in the upcoming installation wizard.

  1. There is a kivy ebuild (kivy stable version)

    emerge Kivy

  2. available USE-flags are:

    cairo: Standard flag, let kivy use cairo graphical libraries. camera: Install libraries needed to support camera. doc: Standard flag, will make you build the documentation locally. examples: Standard flag, will give you kivy examples programs. garden: Install garden tool to manage user maintained widgets. gstreamer: Standard flag, kivy will be able to use audio/video streaming libraries. spell: Standard flag, provide enchant to use spelling in kivy apps.

<<<<<<< HEAD Manually installing Kivy from source ————————————

For other distros or to manually install Kivy from source, see installation_in_venv.

Device permissions

When you app starts, Kivy uses Mtdev to scan for available multi-touch devices to use for input. Access to these devices is typically restricted to users or groups with the appropriate permissions.

If you do not have access to these devices, Kivy will log an error or warning specifying these devices, normally something like:

Permission denied:'/dev/input/eventX'

In order to use these devices, you can add your user to a group that has the required permissions. For example, in Ubuntu, you can add the user to the ‘input’ group:

$ sudo adduser $USER input

Note that you need to log out then back in again for these permissions to be applied. >>>>>>> master