PyImport_ImportModule, PyModule_GetDict
Michael P. Reilly
arcege at shore.net
Thu Jul 8 14:02:55 EDT 1999
More information about the Python-list mailing list
Thu Jul 8 14:02:55 EDT 1999
- Previous message (by thread): PyImport_ImportModule, PyModule_GetDict
- Next message (by thread): Two Pythons talking to each other?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Michael P. Reilly <arcege at shore.net> wrote: : Randy Heiland <heiland at ncsa.uiuc.edu> wrote: : : If I understand this correctly, the equivalent of doing this: : :>>> import mymodule : :>>> dir(mymodule) : : is sort of this, in the C API: : : PyObject *mod = PyImport_ImportModule("mymodule"); : : PyObject *myDict = PyModule_GetDict(mod); : : Q: what is the C API equivalent of this: : :>>> from mymodule import * : :>>> dir() Oops... forgot to initialize something. It compiled and worked, but would only work without optimized compilation. :) : You will have to do something a little more: : PyObject *fromlist, *main, *globals; : PyObject *sysmod, *sysdict, *key, *val; : int pos; /* used internally by PyDict_Next() */ ^^^^^^^^^^^^^^ int pos = 0; : /* tell __import__ to return the top-level module */ : fromlist = Py_BuildValue("[s]", "*"); : main = PyImport_ImportModule("__main__"); : globals = PyModule_GetDict(main); : /* ImportModuleEx handles "from package.module import *" as well */ : sysmod = PyImport_ImportModuleEx("sys", globals, globals, fromlist); : sysdict = PyModule_GetDict(sysmod); : /* perform standard name bindings */ : while (PyDict_Next(sysdict, &pos, &key, &val) > 0) { : if (!PyString_Check(key) || : (PyString_AS_STRING(key)[0] != '_')) : PyDict_SetItem(globals, key, val); : } : If you look at the documentation for __import__, it does not perform the : name binding in the globals dictionary (for some reason ;), so that must : be performed manually. : -Arcege
- Previous message (by thread): PyImport_ImportModule, PyModule_GetDict
- Next message (by thread): Two Pythons talking to each other?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list