Używam Boost.Python do osadzenia interpretera w moim pliku wykonywalnym C++ i wykonania niektórych wstępnie napisanych skryptów. Mam to działa tak, że mogę wywoływać funkcje w pliku Pythona, ale kod Pythona, który chcę zaimportować pliki zewnętrzne i tych importów nie powiodło się, ponieważ "nie moduł o nazwie". Jeśli uruchomię skrypt bezpośrednio z Pythona, wszystko działa zgodnie z oczekiwaniami.W jaki sposób import działa z Boost.Python z wewnątrz plików Pythona
Moje pytanie brzmi: jaki jest prawidłowy sposób importowania modułów w skryptach Pythona uruchamianych przy użyciu wiązań C++?
C++ Kod:
#include "boost/python.hpp"
int main(int argc, char** argv)
{
try
{
Py_Initialize();
boost::python::object test = boost::python::import("__main__");
boost::python::object testDict = test.attr("__dict__");
boost::python::exec_file("test.py", testDict, testDict);
}
catch(boost::python::error_already_set& e)
{
PyErr_Print();
}
return 0;
}
kod Python:
import ModuleX
Dla Python3 zamień 'PyString_FromString' na' PyBytes_FromString' – schuess