我怎么能在c中嵌入python?

时间:2014-05-08 09:30:40

标签: python c

我写了C代码如下:

int main(int argc, char** argv)

{

    PyObject *mod, *name, *func;
    Py_Initialize();
    mod = PyImport_ImportModule("perf_tester");
    if(!mod)
    {
        printf("cannot find perf_tester.py");
        getchar();
        return -1;
    }
    name = PyObject_GetAttrString(mod, "CheckSharpness");
    if(!name)
    {
        printf("can not find CheckSharpness");
        getchar();
        return -1;
    }
    func = PyObject_GetAttrString(name,"F");
    if(!func)
    {
        printf("can not find function");
        getchar();
        return -1;
    }
    Py_Finalize();
    system("pause");
    return 0;
}

除了func,我可以找到mod和名字。

和perf_tester.py的部分内容如下:

def CheckSharpness(sample, edges, min_pass_mtf, min_pass_lowest_mtf,
           use_50p, mtf_sample_count, mtf_patch_width,
           mtf_crop_ratio=_MTF_DEFAULT_CROP_RATIO,
           n_thread=1):

  mtfs = [mtf_calculator.Compute(sample, line_start[t], line_end[t],
                                   mtf_patch_width, mtf_crop_ratio,
                                   use_50p)[0] for t in perm]

  F = open("data.txt","w")
  F.write(str(mtfs))
  F.close()

我该怎么办?

1 个答案:

答案 0 :(得分:1)

F是一个局部变量,它不是CheckSharpness的成员。当CheckSharpness当前未运行时,它不存在,CheckSharpness的每次调用都有自己的副本。没有办法从外面访问它。