/* Support for dynamic loading of extension modules */#include "Python.h"/* ./configure sets HAVE_DYNAMIC_LOADING if dynamic loading of modules issupported on this platform. configure will then compile and link in oneof the dynload_*.c files, as appropriate. We will call a function inthose modules to get a function pointer to the module's init function.*/#ifdef HAVE_DYNAMIC_LOADING#include "importdl.h"extern dl_funcptr _PyImport_GetDynLoadFunc(const char *name,const char *shortname,const char *pathname, FILE *fp);PyObject *_PyImport_LoadDynamicModule(char *name, char *pathname, FILE *fp){PyObject *m;char *lastdot, *shortname, *packagecontext, *oldcontext;dl_funcptr p;if ((m = _PyImport_FindExtension(name, pathname)) != NULL) {Py_INCREF(m);return m;}lastdot = strrchr(name, '.');if (lastdot == NULL) {packagecontext = NULL;shortname = name;}else {packagecontext = name;shortname = lastdot+1;}p = _PyImport_GetDynLoadFunc(name, shortname, pathname, fp);if (PyErr_Occurred())return NULL;if (p == NULL) {PyErr_Format(PyExc_ImportError,"dynamic module does not define init function (init%.200s)",shortname);return NULL;}oldcontext = _Py_PackageContext;_Py_PackageContext = packagecontext;(*p)();_Py_PackageContext = oldcontext;if (PyErr_Occurred())return NULL;m = PyDict_GetItemString(PyImport_GetModuleDict(), name);if (m == NULL) {PyErr_SetString(PyExc_SystemError,"dynamic module not initialized properly");return NULL;}/* Remember the filename as the __file__ attribute */if (PyModule_AddStringConstant(m, "__file__", pathname) < 0)PyErr_Clear(); /* Not important enough to report */if (_PyImport_FixupExtension(name, pathname) == NULL)return NULL;if (Py_VerboseFlag)PySys_WriteStderr("import %s # dynamically loaded from %s\n",name, pathname);Py_INCREF(m);return m;}#endif /* HAVE_DYNAMIC_LOADING */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。