[C++-sig] boost::python embedding return value
Neal Becker
ndbecker2 at gmail.com
Thu Mar 4 17:59:40 CET 2010
int main () {
Py_Initialize();
object main_module = import("__main__");
object main_namespace = main_module.attr("__dict__");
try {
object result = exec ("import sys\n"
"sys.path.append('./')\n"
"import test_embed\n"
"test_embed.five_square()\n",
main_namespace);
int five_squared = extract<int> (result);
std::cout << five_squared << '\n';
}
catch (error_already_set const&) {
PyErr_Print();
}
}
test_embed.py:
--------------------
def five_square ():
return 5 ** 2
I get:
./test_embed
TypeError: No registered converter was able to produce a C++ rvalue of type
int from this Python object of type NoneType
Why did exec return None? I expected it to return the result of
"test_embed.five_squared()", which is the int 25. What is the meaning of
the return of exec_file? A python module can't return a result.
More information about the Cplusplus-sig
mailing list