Main Content

Limitations to Python Support

Features Not Supported in MATLAB®

Closing the Python® interpreter while running MATLAB with in-process execution mode.

Saving (serializing) Python objects into a MAT-file.

Passing Python objects or keyword arguments created by pyargs as key arguments to the MATLAB dictionary function or as input to the keyMatch function.

Interactive Python help (calling py.help without input arguments).

py.input and py.raw_input (version 2.7).

Accessing static properties of a Python class.

MATLAB isa function does not recognize virtual inheritance.

MATLAB class inheritance from a Python class.

Customized (dynamic) attribute access.

Nested Python classes.

Modules that start MATLAB in a separate process, for example, the multiprocessing module.

Modules that read sys.argv, the command-line arguments passed to a Python script, for example, Tkinter.

Dynamically generated Python classes, for example, collections.namedtuple in CPython 2.7.

Dynamically attaching new object attributes. Instead, use py.setattr.

Class names or other identifiers starting with an underscore (_) character. Instead, use the Python py.getattr and py.setattr functions.

Python modules generated by the MATLAB Compiler SDK™ product.

Python code using Cocoa (AppKit) for user interfaces on macOS platforms.

The size of variables passed between Python and MATLAB is limited to 2 GB when you call a Python function out-of-process. This limit applies to the data plus supporting information passed between the processes.

Limitations to pyrun and pyrunfile Functions

Python classes defined using pyrun or pyrunfile cannot be modified if you return an instance of the class to MATLAB. If you need to change class definitions, restart the interpreter session:

terminate(pyenv)
pyenv("ExecutionMode","OutOfProcess")

Alternatively, restart MATLAB for "InProcess".

The pyrun and pyrunfile functions do not support classes with local variables that are initialized by other local variables through methods. For such usage, create a module and access it using the py. prefix.

Unsupported MATLAB Types

These MATLAB types are not supported in Python.

  • Multidimensional char or cell arrays

  • Structure arrays

  • Sparse arrays

  • categorical,
    table,
    containers.Map,
    datetime types

  • MATLAB objects

  • meta.class (py.class)

Related Topics