#include <iostream>
#include <Python.h>

#include <boost/python.hpp>
using namespace boost::python;

using namespace std;

int main(int argc, char** argv) {

    { // Using Python/C
        Py_Initialize();
        PyObject* main_module = PyImport_ImportModule("__main__");
        PyObject* globals = PyEval_GetGlobals();
        PyObject* locals = PyEval_GetLocals();
        PyRun_SimpleString("print 'Hello World, from Python/C!'\n");
        Py_Finalize();
    }

    { // Using boost::python
        Py_Initialize();
        object main_module = import("__main__");
        object main_namespace = main_module.attr("__dict__");
        try {
            object ignored = exec("print 'Hello World, from boost::python!'\n",
                                  main_namespace);
            Py_Finalize();
        } catch (error_already_set const& e) {
            PyErr_Print();
            return 1;
        }
    }

    return 0;
}
