Page MenuHomePhabricator

Python Bindings For Efl
Updated 1,018 Days AgoPublic

Python bindings for EFL

The Python bindings have complete abstraction, or rather a translation to Python types, of the underlying C types.

Stable releases

All the stable releases of python-efl can always be found at:

Source repository

Development take place on git, in the master branch, while we backport bugfixes in the release branches.
You will find a branch for each released version, branches are named as python-efl-X.X.

Install from pypi

The easiest way to install the bindings are from pypi, just use:

sudo pip install python-efl

This will download, build and install the latest release from pypi on your machine. You can also uninstall using:

sudo pip uninstall python-efl

Otherwise you can download a stable release or the latest development from git.


The bindings are fully documented and the documentation is automatically generated at every git change, you can browse the latest development version online or download a zip file that contains the latest generated docs. Documentation for the last stable release can be found here.
Additionally you can generate the documentation yourself from the source code using the following command:

python build build_doc

Live source tarball

We provide a live source tarball for you to install and test. This archive is automatically generated at every developer commit so it is considered unstable. To compile and install this tarball you do not need cython as it contains pre-generated c files. The tarball can be found at:

To install the tarball just untar the archive and run:

sudo python install


~95%~65%~65%~55%100%see belowsee below
NOTE: Eldbus: Our current solution integrates Ecore mainloop for use with dbus-python.
NOTE: Efreet: Already provided by other Python packages such as PyXDG.
NOTE: Coverage percentages are estimates, and we have left out on purpose some functionality that we feel is not feasible for us to provide, f.e. custom Elementary widgets.

Additional Resources


@kuuko @DaveMDS

IRC channel @ FreeNode

Projects using Python-EFL (in random order)

EpyMC - Media Center
Espionage - D-Bus inspector
Epour - BitTorrent Client
Econnman - Connman GUI
Eluminance - Fast photo browser
Egitu - Git User Interface
Edone - GettingThingsDone
Lekha - PDF viewer
Polkit-EFL - Polkit agent
Epack - Archive extractor

... and many more that cannot fit in this short list. If have some code and want it in this list just let us know.

A short history of Python-EFL

Python-EFL was begun in 2007 by work of Gustavo Sverzut Barbieri (@barbieri) and others while working for Nokia on the software project Canola Media Player. The language bindings were initially developed for the individual components of EFL, until merged together in 2013.

He was later joined by Ulisses Furquim Freire da Silva (@ulisses), who together formed the company ProFUSION embedded systems where the developement continued and a new software project called Editje was created, which uses the Python bindings for most of its functionality.

Python-EFL gained many more developers, also at this time an independent application project called EpyMC was created by Davide Andreoli (@DaveMDS).

In the beginning of the year 2011 the developement was practically halted. In 2012 Davide Andreoli picked up the developement and Kai Huuhko (@kuuko) joined him shortly after. Work at this time was focused on finishing the Python bindings for Elementary, the toolkit library.

In 2013 the individual components were merged together and a new documentation system was implemented, enabling easier access for the end-user developers.

1.7 API (deprecated, no more supported)

Source repository



estimated 20-90%

Generated with Epydoc, with mostly full documentation for supported API features.

Last Author
Last Edited
Jun 25 2017, 6:59 AM
barbieri, DaveMDS, ulisses and 2 others