Creating a "package" using C extensions?

Courageous jkraska at san.rr.com
Mon Dec 10 13:31:02 EST 2001


>IF you figure out how to do this, I'd love to see an example. It owuld
>be prettyhandy for me as well. Maybe even a cookbook entry?

I've figured it out. It's not hard at all, however there is a small
amount of repetitive labor involved. Here is the init method for
my "package" that I'm developing:

void _declspec(dllexport) initlrammp()
{
    PyObject* m = Py_InitModule3("lrammp", LrammpModuleMethods, LrammpModuleDocs );
    PyObject* d = PyModule_GetDict(m);

    PyDict_SetItemString(d, "simulator", __LRAMMP__SimulatorModuleInit());
    PyDict_SetItemString(d, "agent",     __LRAMMP__AgentModuleInit());
}

Note the specific mutations on the "lrammp" module's dictionary at
init time. I am adding modules, as defined in the __LRAMMP__* forms
directly to the dictionary. These are taken from seperate source files
that have "pseudo init" methods of their own. They're not _declspecd
and aren't intended to invoked directly by Python.

This seems to work in testing my .py file. For example, the following
seems to work as expected:

from lrammp import simulator
from lrammp import agent

Likewise what is imported appears to be a proper module.

This functionality seems to fit the bill for me.

Not having to produce a couple dozen .dlls is a relief. :)

C//





More information about the Python-list mailing list