Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 5, 2011 22:09:03

hippi90
От:
Зарегистрирован: 2011-04-06
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

[EmbeddingPython] Не импортируется модуль

Доброго всем времени суток! Хочу попробовать встроить в свое приложение возможность выполнения скриптов на 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 подсказал гугл, но он также не помогает.



Офлайн

#2 Ноя. 6, 2011 08:44:58

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

[EmbeddingPython] Не импортируется модуль

Для того чтобы питон встраивать - его, желательно изучить.
К вас ошибка в модуле:

def func():                                                                                                                                                    
print "Hello World"

Офлайн

#3 Ноя. 11, 2011 05:34:58

usmix
От:
Зарегистрирован: 2011-07-08
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

[EmbeddingPython] Не импортируется модуль

	...
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()");



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version