What is Python bindings

[Hint: The idea is to create pages for the stuff, not just link it.]There a various tools which make it easier to bridge the gap between Python and C/C++:Pyrex - write your extensi

What is Python bindings

[Hint: The idea is to create pages for the stuff, not just link it.]

There a various tools which make it easier to bridge the gap between Python and C/C++:

  • Pyrex - write your extension module on Python
  • Cython -- Cython -- an improved version of Pyrex
  • CXX - PyCXX - helper lib for writing Python extensions in C++
  • ctypes is a Python module allowing to create and manipulate C data types in Python. These can then be passed to C-functions loaded from dynamic link libraries.
  • elmer - compile and run python code from C, as if it was written in C
  • PicklingTools is a collection of libraries for exchanging Python Dictionaries between C++ and Python.
  • weave - include C code lines in Python program (deprecated in favor of Cython)
  • ackward exposes parts of Python's standard library as idiomatic C++
  • CFFI - interact with almost any C code from Python, based on C-like declarations that you can often copy-paste from header files or documentation.

C/C++ Binding Generators

Tools to make C/C++ functions/methods accessible from Python by generating binding (Python extension or module) from header files.

  • boost.python - Expose C++ classes functions and objects to Python, and vice-versa, using just C++ compiler
  • PyAutoC - Automatically wrap C functions and structs, using just C compiler.
  • pwig is a SWIG extension for writing new language modules in Python.
  • PyBindGen Python bindings code generator for pure C or C++ APIs. The generator is written in Python and has low complexity. The generated code is lean, efficient, and highly readable
  • shiboken - Binding Generator used to create PySide Python bindings for Qt
  • SIP - similar to SWIG but specialised for Python and C++. Used to create PyQt, the Qt API wrapper library
  • SWIG - generate extension module from your .h files
  • pybind11 - Similar to Boost.Python, but with a lean header-only implementation for C++11-capable compilers.
  • pyclif - Google tool. Similar to SWIG, but user-friendly and targeted only C++11 well-written libs.
  • cppyy - Fast, automatic, Python-C++ bindings, including run-time template instantiations, cross-inheritance, auto-casting, etc.
  • Scapix Language Bridge - generates Python (and other languages) bindings directly from C++ headers.

Articles

  • Using Python as glue SciPy Documentation
  • Building Hybrid Systems with Boost.Python in C/C++ User Journal (2003)
  • Integrating Python, C and C++, presented at the ACCU conference by Duncan Booth (2003)
  • Embedding Python in Multi-Threaded C/C++ Applications in LinuxJournal (2000)

Related

See also http://www.google.com/search?hl=en&lr=&ie=ISO-8859-1&q=Python+prolog

  • Jython - Python implemented in Java
  • JPype - Allows Python to run java commands
  • Jepp - Java embedded Python
  • JCC - a C++ code generator for calling Java from C++/Python
  • Javabridge - a package for running and interacting with the JVM from CPython
  • py4j - Allows Python to run java commands.
  • voc - Part of BeeWare suite. Converts python code to Java bytecode.
  • p2j - Converts Python code to Java. No longer developed.
  • ActiveState supports Python .NET.
  • Python for .NET is a near-seamless integration of the CPython runtime with the .NET Common Language Runtime (CLR).
  • IronPython is an implementation of Python for .net, which allows you to import .net class libraries seamlessly in Python.

See http://www.faqts.com/knowledge_base/view.phtml/aid/17202/fid/1102

For converting/porting Perl code to Python the tool 'Bridgekeeper' http://www.crazy-compilers.com/bridgekeeper/ may be handy.

  • elmer - compile and run python code from Tcl, as if it was written in Tcl
  • TclPython - A package for Tcl that allows you to pass strings of Python code from a Tcl environment to a Python (Python 2.x or 3.x) interpreter.
  • Tcl and other languages - Tcl's equivalent of this page.
  • LunaticPython - a two-way bridge between Python and Lua.
  • Lupa - fast wrapper for LuaJIT2 written in Cython.
  • Lux - a mutant Lua emphasizing interoperation with Python, Perl, etc.
  • Pycaml - write Python extension modules in OCaml (instead of C), and use Python code and native libraries from OCaml programs.

to name a few. There are much more...

Thinki: UsingPythonWithOtherLanguages

Video liên quan