116
Comment:
|
5948
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
There a various tools which make it easier to brisge the gab beetween Python and C: | <<TableOfContents>> |
Line 3: | Line 3: |
* SWIG * boost * pyrex |
[Hint: The idea is to create pages for the stuff, not just link it.] = C/C++ = There a various tools which make it easier to bridge the gap between Python and C/C++: * [[http://www.swig.org/|SWIG]] - generate extension module from your .h files * [[boost.python]] - write (tiny) C++ class to wrap your classes in an extension module * [[Pyrex]] - write your extension module on Python (!) * [[http://cxx.sourceforge.net/|CXX]] * [[http://starship.python.net/crew/gmcm/scxx.html|SCXX]] * [[weave]] - include C code lines in Python program * [[SIP]] - similar to SWIG but specialised for Python and C++. Used to create PyQt, the [[Qt]] API wrapper library * [[http://starship.python.net/crew/theller/ctypes/|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 * [[http://pwig.sourceforge.net/|pwig]] is a SWIG extension for writting new language modules in Python. * [[http://www.picklingtools.com/|PicklingTools]] is a collection of libraries for exchanging Python Dictionaries between C++ and Python. * [[http://code.google.com/p/pybindgen/|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. ---- '''Articles''' * Embedding Python in Multi-Threaded C/C++ Applications in [[http://www.linuxjournal.com/article.php?sid=3641|LinuxJournal]] * Building Hybrid Systems with Boost.Python in [[http://www.cuj.com/documents/s=8188/cuj0307abrahams/|C/C++ User Journal]] * [[http://dales.rmplc.co.uk/Duncan/accu/integratingpython.html|Integrating Python, C and C++]], presented at the ACCU conference by Duncan Booth, and his [[http://dales.rmplc.co.uk/Duncan/accu|conference slides]] ---- '''Related''' * AppsWithPythonScripting = Fortran = * [[F2PY]] - Fortran to Python Interface Generator (http://cens.ioc.ee/projects/f2py2e/) * PyFort - The Python-Fortran connection tool (http://pyfortran.sourceforge.net/) = Lisp = * [[CLPython]] - Python implemented in Common Lisp * [[http://web.archive.org/web/20050207230521/http://www.caddr.com/code/lython/|Lython (archived page)]] - Lisp front-end for Python * [[http://pymacs.progiciels-bpi.ca/|Pymacs]] - integration of Python with Emacs Lisp = Prolog = * PyLog (actually two ''different'' products) * [[http://agave.ahsc.arizona.edu/~schcats/projects/|prolog]] a simple interface to [[http://www.swi-prolog.org/|SWI-Prolog]] * bedevere - Python wrapper to GNU Prolog http://bedevere.sourceforge.net/ * [[http://pwig.sourceforge.net/|pwig]] includes examples of wrapping Python for SWI-Prolog. * [[http://code.google.com/p/pyswip/|pyswip]] is a ctypes based module that enables querying SWI-Prolog. See also [[http://www.google.com/search?hl=en&lr=&ie=ISO-8859-1&q=Python+prolog]] = Java = * [[Jython]] - Python implemented in Java * [[JPype]] - Java for CPython * [[Jepp]] - Java embedded Python = C#/.NET = * [[http://www.activestate.com/Corporate/Initiatives/NET/Research.html?_x=1|ActiveState research]] * [[http://zope.org/Members/Brian/PythonNet/|Python for .NET]] is a near-seamless integration of the CPython runtime with the .NET Common Language Runtime (CLR). * [[http://www.codeplex.com/IronPython|IronPython]] is an implementation of Python for .net, which allows you to import .net class libraries seamlessly in Python. = Perl = See http://www.faqts.com/knowledge_base/view.phtml/aid/17202/fid/1102 * PyPerl [[http://aspn.activestate.com/ASPN/CodeDoc/pyperl/perlmodule.html]] * [[http://search.cpan.org/search?query=Inline%3A%3APython&mode=all|Inline::Python]] * PyPerlish - Perl idioms in Python For converting/porting Perl code to Python the tool 'Bridgekeeper' [[http://www.crazy-compilers.com/bridgekeeper/]] may be handy. = PHP = * PiP (Python in PHP) [[http://www.csh.rit.edu/~jon/projects/pip/]] * PHP "Serialize" in Python [[http://hurring.com/scott/code/python/serialize/]] = R = * RPy [[http://rpy.sourceforge.net]] * RSPython [[http://www.omegahat.org/RSPython]] = Objective-C = * http://pyobjc.sourceforge.net/ = Tcl = * [[elmer]] - compile and run python code from Tcl, as if it was written in Tcl * [[http://jfontain.free.fr/tclpython.htm|TclPython]] - a Python package for Tcl allows execution of Python (version 2.2 or above) code from a Tcl interpreter. * [[http://mini.net/tcl/1324|Tcl and other languages]] - Tcl's equivalent of this page. = Lua = * [[http://moin.conectiva.com.br/LunaticPython|LunaticPython]] - a two-way bridge between Python and Lua. * [[http://www.equi4.com/lux/|Lux]] - a mutant Lua emphasizing interoperation with Python, Perl, etc. = OCaml = * [[http://pycaml.sourceforge.net/|Pycaml]] - write Python extension modules in OCaml (instead of C), and use Python code and native libraries from OCaml programs. = Eiffel and Haskell = * Eiffel/Haskell [[http://epolyglot.sourceforge.net/]] (last updated 2001) * PythonVsHaskell has a section "Using both Python & Haskell with ctypes". = Other (applications) = * LotusNotes [[http://www.dominopower.com/issuesprint/issue200008/command.html]] * [[PostgreSQL]] [[http://www.linuxgazette.com/issue80/nielsen.html]] * RenderMan [[http://www.lysator.liu.se/~ture/terry.html]] * CorbaPython: for a generic solution to language integration to name a few. There are much [[http://www.google.com/search?q=Python+binding&hl=en|more...]] = Other (standards and protocols) = * XMLRPC and SOAP * Yaml: http://www.yaml.org = See also = Thinki: [[http://web.archive.org/web/20071108024137/http://www.thinkware.se/cgi-bin/thinki.cgi/UsingPythonWithOtherLanguages|UsingPythonWithOtherLanguages]] |
Contents
[Hint: The idea is to create pages for the stuff, not just link it.]
C/C++
There a various tools which make it easier to bridge the gap between Python and C/C++:
SWIG - generate extension module from your .h files
boost.python - write (tiny) C++ class to wrap your classes in an extension module
Pyrex - write your extension module on Python
weave - include C code lines in Python program
SIP - similar to SWIG but specialised for Python and C++. Used to create PyQt, the Qt API wrapper library
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
pwig is a SWIG extension for writting new language modules in Python.
PicklingTools is a collection of libraries for exchanging Python Dictionaries between C++ and 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.
Articles
Embedding Python in Multi-Threaded C/C++ Applications in LinuxJournal
Building Hybrid Systems with Boost.Python in C/C++ User Journal
Integrating Python, C and C++, presented at the ACCU conference by Duncan Booth, and his conference slides
Related
Fortran
F2PY - Fortran to Python Interface Generator (http://cens.ioc.ee/projects/f2py2e/)
PyFort - The Python-Fortran connection tool (http://pyfortran.sourceforge.net/)
Lisp
CLPython - Python implemented in Common Lisp
Lython (archived page) - Lisp front-end for Python
Pymacs - integration of Python with Emacs Lisp
Prolog
PyLog (actually two different products)
prolog a simple interface to SWI-Prolog
bedevere - Python wrapper to GNU Prolog http://bedevere.sourceforge.net/
pwig includes examples of wrapping Python for SWI-Prolog.
pyswip is a ctypes based module that enables querying SWI-Prolog.
See also http://www.google.com/search?hl=en&lr=&ie=ISO-8859-1&q=Python+prolog
Java
C#/.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.
Perl
See http://www.faqts.com/knowledge_base/view.phtml/aid/17202/fid/1102
PyPerl http://aspn.activestate.com/ASPN/CodeDoc/pyperl/perlmodule.html
PyPerlish - Perl idioms in Python
For converting/porting Perl code to Python the tool 'Bridgekeeper' http://www.crazy-compilers.com/bridgekeeper/ may be handy.
PHP
PiP (Python in PHP) http://www.csh.rit.edu/~jon/projects/pip/
PHP "Serialize" in Python http://hurring.com/scott/code/python/serialize/
R
Objective-C
Tcl
elmer - compile and run python code from Tcl, as if it was written in Tcl
TclPython - a Python package for Tcl allows execution of Python (version 2.2 or above) code from a Tcl interpreter.
Tcl and other languages - Tcl's equivalent of this page.
Lua
LunaticPython - a two-way bridge between Python and Lua.
Lux - a mutant Lua emphasizing interoperation with Python, Perl, etc.
OCaml
Pycaml - write Python extension modules in OCaml (instead of C), and use Python code and native libraries from OCaml programs.
Eiffel and Haskell
Eiffel/Haskell http://epolyglot.sourceforge.net/ (last updated 2001)
PythonVsHaskell has a section "Using both Python & Haskell with ctypes".
Other (applications)
LotusNotes http://www.dominopower.com/issuesprint/issue200008/command.html
CorbaPython: for a generic solution to language integration
to name a few. There are much more...
Other (standards and protocols)
- XMLRPC and SOAP
Yaml: http://www.yaml.org
See also
Thinki: UsingPythonWithOtherLanguages