6787
Comment: updated URL to point to current Tcl Wiki instead of old inactive site.
|
7402
wiki restore 2013-01-23
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Line 5: | Line 6: |
Line 6: | Line 8: |
Line 8: | Line 12: |
* [[Pyrex]] - write your extension module on Python (!) | * [[Pyrex|Pyrex]] - write your extension module on Python (!) * [[http://cython.org/|Cython]] -- Cython -- an improved version of Pyrex |
Line 12: | Line 18: |
* [[elmer]] - compile and run python code from C, as if it was written in C | * [[elmer|elmer]] - compile and run python code from C, as if it was written in C |
Line 14: | Line 20: |
* [[weave]] - include C code lines in Python program | * [[weave|weave]] - include C code lines in Python program |
Line 16: | Line 22: |
Line 17: | Line 25: |
Line 18: | Line 28: |
* [[boost.python]] - expose C++ classes functions and objects to Python, and vice-versa, using just C++ compiler | * [[boost.python|boost.python]] - Expose C++ classes functions and objects to Python, and vice-versa, using just C++ compiler * [[https://github.com/orangeduck/PyAutoC|PyAutoC]] - Automatically wrap C functions and structs, using just C compiler. |
Line 20: | Line 33: |
* [[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 * [[http://developer.qt.nokia.com/wiki/Category:LanguageBindings::PySide::Shiboken|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 * [[http://www.swig.org/|SWIG]] - generate extension module from your .h files |
* [[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 * [[http://developer.qt.nokia.com/wiki/Category:LanguageBindings::PySide::Shiboken|shiboken]] - Binding Generator used to create [[PySide|PySide]] Python bindings for Qt * [[SIP|SIP]] - similar to SWIG but specialised for Python and C++. Used to create [[PyQt|PyQt]], the [[Qt|Qt]] API wrapper library * [[http://www.swig.org/|SWIG]] - generate extension module from your .h files |
Line 25: | Line 40: |
Line 26: | Line 42: |
Line 29: | Line 47: |
Line 30: | Line 50: |
Line 31: | Line 52: |
* AppsWithPythonScripting | * [[AppsWithPythonScripting|AppsWithPythonScripting]] |
Line 34: | Line 58: |
* Python4Delphi - Python for Delphi is a set of free components that wrap up the Python Dll into Delphi. (http://code.google.com/p/python4delphi/) | * [[Python4Delphi|Python4Delphi]] - Python for Delphi is a set of free components that wrap up the Python Dll into Delphi. (http://code.google.com/p/python4delphi/) |
Line 37: | Line 64: |
* [[F2PY]] - Fortran to Python Interface Generator (http://cens.ioc.ee/projects/f2py2e/) * PyFort - The Python-Fortran connection tool (http://pyfortran.sourceforge.net/) |
* [[F2PY|F2PY]] - Fortran to Python Interface Generator (http://cens.ioc.ee/projects/f2py2e/) * [[PyFort|PyFort]] - The Python-Fortran connection tool (http://pyfortran.sourceforge.net/) |
Line 41: | Line 71: |
* [[CLPython]] - Python implemented in Common Lisp | * [[CLPython|CLPython]] - Python implemented in Common Lisp |
Line 45: | Line 77: |
Line 46: | Line 79: |
* PyLog (actually two ''different'' products) | * [[PyLog|PyLog]] (actually two ''different'' products) |
Line 52: | Line 87: |
See also [[http://www.google.com/search?hl=en&lr=&ie=ISO-8859-1&q=Python+prolog]] | See also http://www.google.com/search?hl=en&lr=&ie=ISO-8859-1&q=Python+prolog |
Line 55: | Line 92: |
* [[Jython]] - Python implemented in Java * [[JPype]] - Java for CPython * [[Jepp]] - Java embedded Python |
* [[Jython|Jython]] - Python implemented in Java * [[JPype|JPype]] - Java for CPython * [[Jepp|Jepp]] - Java embedded Python |
Line 60: | Line 99: |
Line 61: | Line 101: |
Line 65: | Line 107: |
Line 66: | Line 109: |
Line 67: | Line 112: |
* PyPerl [[http://search.cpan.org/dist/pyperl/]] * [[http://search.cpan.org/search?query=Inline%3A%3APython&mode=all|Inline::Python]] * PyPerlish - Perl idioms in Python |
|
Line 71: | Line 113: |
For converting/porting Perl code to Python the tool 'Bridgekeeper' [[http://www.crazy-compilers.com/bridgekeeper/]] may be handy. |
* [[PyPerl|PyPerl]] http://search.cpan.org/dist/pyperl/ * [[http://search.cpan.org/search?query=Inline::Python&mode=all|Inline::Python]] * [[PyPerlish|PyPerlish]] - Perl idioms in Python For converting/porting Perl code to Python the tool 'Bridgekeeper' http://www.crazy-compilers.com/bridgekeeper/ may be handy. |
Line 77: | Line 124: |
* PiP (Python in PHP) [[http://www.csh.rit.edu/~jon/projects/pip/]] * PHP "Serialize" in Python [[http://hurring.com/scott/code/python/serialize/]] |
* PiP (Python in PHP) http://www.csh.rit.edu/~jon/projects/pip/ * PHP "Serialize" in Python http://hurring.com/scott/code/python/serialize/ |
Line 81: | Line 130: |
* RPy [[http://rpy.sourceforge.net]] * RSPython [[http://www.omegahat.org/RSPython]] |
* RPy [[http://rpy.sourceforge.net/|http://rpy.sourceforge.net]] * RSPython http://www.omegahat.org/RSPython |
Line 85: | Line 137: |
Line 87: | Line 141: |
Line 88: | Line 143: |
* [[elmer]] - compile and run python code from Tcl, as if it was written in Tcl | * [[elmer|elmer]] - compile and run python code from Tcl, as if it was written in Tcl |
Line 92: | Line 149: |
Line 93: | Line 151: |
Line 95: | Line 155: |
* [[http://www.equi4.com/lux/|Lux]] - a mutant Lua emphasizing interoperation with Python, Perl, etc. | * [[http://www.equi4.com/lux/|Lux]] - a mutant Lua emphasizing interoperation with Python, Perl, etc. |
Line 98: | Line 159: |
Line 100: | Line 163: |
Line 101: | Line 165: |
* Eiffel/Haskell [[http://epolyglot.sourceforge.net/]] (last updated 2001) * PythonVsHaskell has a section "Using both Python & Haskell with ctypes". |
* Eiffel/Haskell http://epolyglot.sourceforge.net/ (last updated 2001) * [[PythonVsHaskell|PythonVsHaskell]] has a section "Using both Python & Haskell with ctypes". |
Line 105: | Line 172: |
* 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 |
* [[LotusNotes|LotusNotes]] http://www.dominopower.com/issuesprint/issue200008/command.html * [[PostgreSQL|PostgreSQL]] http://www.linuxgazette.com/issue80/nielsen.html * [[RenderMan|RenderMan]] http://www.lysator.liu.se/~ture/terry.html * [[CorbaPython|CorbaPython]]: for a generic solution to language integration |
Line 111: | Line 182: |
Line 112: | Line 184: |
Line 113: | Line 187: |
* Yaml: http://www.yaml.org | * Yaml: [[http://www.yaml.org/|http://www.yaml.org]] |
Line 116: | Line 191: |
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++:
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
ackward exposes parts of Python's standard library as idiomatic C++
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 writting 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
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
Delphi
Python4Delphi - Python for Delphi is a set of free components that wrap up the Python Dll into Delphi. (http://code.google.com/p/python4delphi/)
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
Jython - Python implemented in Java
JPype - Java for CPython
Jepp - Java embedded Python
JCC - a C++ code generator for calling Java from C++/Python
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
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.
Lupa - fast wrapper for LuaJIT2 written in Cython.
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