py.ml provides OCaml bindings for Python 2 and Python 3. This library subsumes the pycaml library, which is no longer actively maintained.

The Python library is linked at runtime and the same executable can be run in a Python 2 or a Python 3 environment. py.ml does not require any Python library at compile time. The only compile time dependency is Stdcompat to ensure compatibility with all OCaml compiler versions from 3.12.

Bindings are split in three modules:

  • Py provides the initialization functions and some high-level bindings, with error handling and naming conventions closer to OCaml usages.

  • Pycaml provides a signature close to the old Pycaml module, so as to ease migration.

  • Pywrappers provides low-level bindings, which follow closely the conventions of the C bindings for Python. Submodules Pywrappers.Python2 and Pywrappers.Python3 contain version-specific bindings.