The Boost Python Library allows the use of C/C++ from Python. It is part of the larger boost package (http://www.boost.org).
Use the Boost Python Library to quickly and easily export a C++ library to Python such that the Python interface is very similar to the C++ interface. It is designed to be minimally intrusive on your C++ design. In most cases, you should not have to alter your C++ classes in any way in order to use them with Boost.Python. The system should simply reflect your C++ classes and functions into Python.
A summary of the development goals is available on the Python [http://www.python.org/sigs/c++-sig/ C++-sig] page, which also serves as a mailing list for users of the library. Documentation is available on http://www.boost.org/libs/python/doc/index.html
While full set of documentation is being developed, this page seems like a good place to assemble more info and cookbook.
From David Abrahams:
Boost.Python is designed with the idea in mind that users never touch a PyObject*.
Boost.Python depends on quite a few of the other boost libraries (possibly a few others):
IIUC, ["weave"] can be used for embedding nontrivial C++ code, if you're willing to stick it all inside one function body. Furthermore, tools like weave.blitz() can make an enormous difference by compiling an entire C++ expression template corresponding to an arbitrarily complicated Python expression. Surely that's nontrivial. It's definitely cool. I think weave offers enormous power to the person who's programming mostly in Python.