Extending Python Without Python’s C API
You can code Python extensions in
other classic compiled languages besides C. For Fortran, the choice
is between Paul Dubois’s Pyfort (available at
Pearu Peterson’s F2PY (available at http://cens.ioc.ee/projects/f2py2e/). Both
packages support and require the
covered in Chapter 15, since numeric processing is
Fortran’s typical application area.
For C++, the choice is between Gordon McMillan’s simple, lightweight SCXX (available at http://www.mcmillan-inc.com/scxx.html), which uses no templates and is thus suitable for older C++ compilers, Paul Dubois’s CXX (available at http://cxx.sf.net), and David Abrahams’s Boost Python Library (available at http://www.boost.org/libs/python/doc). Boost is a package of C++ libraries of uniformly high quality for compilers that support templates well, and includes the Boost Python component. Paul Dubois, CXX’s author, recommends considering Boost. You may also choose to use Python’s C API from your C++ code, using C++ in this respect as if it was C, and foregoing the extra convenience that C++ affords. However, if you’re already using C++ rather than C anyway, then using SCXX, CXX, or Boost can substantially improve your programming productivity when compared to using Python’s C API.
If your Python extension is basically a wrapper over an existing C or C++ library (as many are), consider SWIG, the Simplified Wrapper and Interface Generator (available ...