Hi, all,

I am currently involved in a project that needs to load/run a python
script dynamically in a C application. The sample code is as
following:

PyObject *LoadScript(char *file, char *func)
{
    PyObject *pName, *pModule, *pDict, *pFunc;

    pName = PyString_FromString(file);
    pModule = PyImport_Import(pName);
    pDict = PyModule_GetDict(pModule);
    pFunc = PyDict_GetItemString(pDict, func);
    return pFunc;
}

int RunScript(PyObject *pFunc, PyObject *arglist)
{
    PyObject *pValue = PyObject_CallFunction(pFunc, "O", arglist);
    int ret = PyInt_AsLong(pValue);
    return ret;
}

int main(int argc, char *argv[])
{
    PyObject *arglist, *pFunc;
    char imgData[10];
    int ret;

    for(int i = 0; i < 10; i++)
        imgData[i] = 48 + i;

    arglist = Py_BuildValue("s#", imgData, 10);

    Py_SetProgramName(argv[0]);
    Py_Initialize();
    PySys_SetArgv(argc, argv);

    for (int k = 0; k < 3; k++) // using loop to imitate dynamic
loading/running script
    {
        pFunc = LoadScript(argv[1], argv[2]);
        ret = RunScript(pFunc, arglist);
    }

    Py_Finalize();
    return 0;
}

The first loop is perfectly ok, but on the second loop, script loading
is successful but running will always fail.

Any ideas would be highly apprecicated.

Thanks,

Liping
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to