gpt4 book ai didi

Python:从 C 函数中确定模块名称

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:13 28 4
gpt4 key购买 nike

我的应用程序嵌入了 python。该应用程序通过添加自己的函数扩展了嵌入式 Python:

PyObject *ReadDPoint(PyObject *self, PyObject *args)

然后应用程序运行调用 ReadDPoint 扩展函数的不同 python 脚本(模块)。任务是确定调用的 ReadDPoint 函数中的模块名称,即调用该函数的模块的名称。我希望解决方案类似于以下之一:

PyObject *module_name =  PyObject_GetAttrString(self, "__name__") 

char *module_name = PyModule_GetName(self) 

但是我惊奇的发现在扩展函数ReadDpoint self里面等于NULL,引用它会导致崩溃。有没有办法确定 C 函数中的模块名称?谢谢!

最佳答案

我找到了一种方法来确定从中调用扩展 C 函数的模块的名称:

PyFrameObject *pyframe;
PyObject *pydict;
pyframe = PyEval_GetFrame();
pydict = pyframe->f_globals;
PyObject *pyname;
pyname = PyDict_GetItemString(pydict, "__name__");
wxMessageBox(PyString_AsString(pyname));

现在 pyname 保存了查找到的模块名

关于Python:从 C 函数中确定模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26457806/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com