Skip to content


Subversion checkout URL

You can clone with
Download ZIP
EPC (RPC stack for Emacs Lisp) for Python
Python Shell Emacs Lisp
Latest commit b2c92ac @tkf Merge branch 'py33'


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.