Innanzi tutto rispondo alla mia domanda.
A quanto pare non funziona mettendo tutto vuoto, bisogna importare il modulo principale, e operare da li'.
Codice:
Py_Initialize();
pythonModule = object(handle<>(borrowed(PyImport_AddModule("__main__"))));
global = pythonModule.attr("__dict__");
object result = exec_file("test.py", global, global);
object test = global['x'];
cout << (extract< int >(test)) << endl;
object test2 = global["Klass"];
object instance = test2();
cout << (extract< int >(instance.attr("go")())) << endl;
In questo modo sembra andare, anche se non capisco perche' debba usare PyImport invece che boost:

ython::import... mah.