Найти - Пользователи
Полная версия: [EmbeddingPython] Не импортируется модуль
Начало » Python для экспертов » [EmbeddingPython] Не импортируется модуль
1
hippi90
Доброго всем времени суток! Хочу попробовать встроить в свое приложение возможность выполнения скриптов на Python. Возникла проблема с импортом собственных модулей. Например, есть два файла main.cpp и script.py в одном каталоге.

script.py:
def func:
print "Hello World"
main.cpp:
#include <Python.h>

int main()
{
PyObject *pname, *pmodule, *pfunc;
Py_Initialize();

PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('.')");

pname = PyString_FromString("script");
pmodule = PyImport_Import(pname);

if (pmodule) {
pfunc = PyObject_GetAttrString(pmodule, "func");
PyObject_CallObject(pfunc, NULL);
}

Py_Finalize();
return 0;
}
При выполнении программы функция PyImport_Import() возвращает 0, т.е. модуль не импортируется. Модули самого Python, например sys или os, импортируются нормально. Способ с включением текущего каталога в sys.path подсказал гугл, но он также не помогает.
s0rg
Для того чтобы питон встраивать - его, желательно изучить.
К вас ошибка в модуле:
def func():                                                                                                                                                    
print "Hello World"
usmix
	...
pname = PyString_FromString("script");
pmodule = PyImport_Import(pname); //# требуется script.pyc

if (pmodule) {
pfunc = PyObject_GetAttrString(pmodule, "func");
PyObject_CallObject(pfunc, NULL);
}
...
Лучше сделать проще:

    PyRun_SimpleString("import script"); 
PyRun_SimpleString("script.func()");
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB