There are several solutions: Source:


A low level interface to Matlab using the matlab engine (libeng) for communication (basically a library that comes with matlab). The module has to be compiled and linked with libeng. [](" rel="nofollow) Last updated: 2003


A somewhat short lived continuation of the pymat development. Seems to work on windows (including 64bit), linux and mac (with some changes). [](" rel="nofollow) Last updated: 2012


A high level interface that also comes as a module which needs compilation and linking against libeng. It exposes Matlab functions to python so you can do fun stuff like mlab.plot(x, y, 'o') [](" rel="nofollow) Last updated: 2009


A repackaging effort of mlabwrap. Basically it replaces the c++ code that links against 'libeng' in mlabwrap with a python module ([matlabpipe](" rel="nofollow)) that communicates with matlab through a pipe. The main advantage of this is that it doesn't need compilation of any kind. Unfortunately the package currently has a couple of bugs and doesn't seem to work on the mac at all. I reported a few of them but gave up eventually. Also, be prepared for lots of trickery and a bunch of pretty ugly hacks if you have to go into the source code ;-) If this becomes more mature it could be one of the best options. [](" rel="nofollow) last update: 2013


A newer package (2010) that also interacts with Matlab through libeng. Unlike the other packages this one loads the engine library through [ctypes](" rel="nofollow) thus no compilation required. Its not without flaws but still being maintained and the (64bit Mac specific) issues I found should be easy enough to fix. (edit 2014-05-20: it seems those issues have already been fixed in the source so things should be fine with 0.2.4) [](" rel="nofollow) last update: 2014


Also a newer package that is still actively maintained. Communicates with Matlab through some sort of socket. Unfortunately the exposed functions are a bit limited. I couldn't figure out how to invoke a function that takes structs as parameters. Requires zmq, pyzmq and IPython which are easy enough to install. [](" rel="nofollow) last update: 2014

Bug report for Mlab: Fixed here: