Skip to content


Subversion checkout URL

You can clone with
Download ZIP
EPC (RPC stack for Emacs Lisp) for Python
Python Shell Emacs Lisp
Fetching latest commit...
Cannot retrieve the latest commit at this time.


EPC (RPC stack for Emacs Lisp) for Python


Other resources:

What is this?

EPC is an RPC stack for Emacs Lisp and Python-EPC is its server side and client side implementation in Python. Using Python-EPC, you can easily call Emacs Lisp functions from Python and Python functions from Emacs. For example, you can use Python GUI module to build widgets for Emacs (see examples/gtk/ for example).

Python-EPC is tested against Python 2.6, 2.7, 3.2 and 3.3.


To install Python-EPC and its dependency sexpdata, run the following command.:

pip install epc


Save the following code as (You can find functionally the same code in examples/echo/

from epc.server import EPCServer

server = EPCServer(('localhost', 0))

def echo(*a):
    return a


And then run the following code from Emacs. This is a stripped version of examples/echo/client.el included in Python-EPC repository.:

(require 'epc)

(defvar my-epc (epc:start-epc "python" '("")))

  (epc:call-deferred my-epc 'echo '(10))
  (deferred:nextc it
    (lambda (x) (message "Return : %S" x))))

(message "Return : %S" (epc:call-sync my-epc 'echo '(10 40)))

If you have carton installed, you can run the above sample by simply typing the following commands:

make elpa        # install EPC in a separated environment
make run-sample  # run examples/echo/client.el

For example of bidirectional communication and integration with GTK, see examples/gtk/ You can run this example by:

make elpa
make run-gtk-sample  # run examples/gtk/client.el


Python-EPC is licensed under GPL v3. See COPYING for details.

Something went wrong with that request. Please try again.