Extending/Embedding python

Rick Ratzel rlratzel at enthought.com
Thu Sep 9 01:36:39 CEST 2004

Have you checked out elmer?


It generates the code needed to embed a Python module into a C
application.  Hope that helps,


"Alicia Haumann" <alicia.haumann at orthodyne.com> wrote in message news:<mailman.2744.1094082648.5135.python-list at python.org>...
> I accidentally sent this to webmaster at python.org, so this could be a
> duplicate if "webmaster" forwards it to this list.  :{
> Hi, there.
> Thanks for any help that can be offered.  I've been working with Python for
> a year or more now, but only doing simple extending in C/C++.  I'm now
> attempting some embedding and several questions have come to mind.
> BTW - I'm running Windows 2000 with Python23 and VisualC++ developers
> studio.
> 1.  (Not extending/embedding related at all)  How can I pass in a load/bunch
> of defines so I can use them over and over again, instead of having to copy
> them in every *.py script.  All my scripts use an "extension" dll that I
> wrote that require a lot of constants.  I looked a lot at that PyMemberDef
> and Type stuff but didn't get it and don't know if that's the solution
> anyway.
> 2.  A couple simple examples I've seen for initModule() are written
> differently.  One only calls Py_InitModule("module", module_methods), but
> the other also calls PyImport_AddModule("module").  What is the difference?
> What does PyImport_AddModule() accomplish?
> 3.  When embedding Python into my simple application, why can't I pass
> application parameters?  PyRun_SimpleString seems to only take hard-coded
> values.  Can/How can I get around this?  My code looks like:
>   if (!Py_IsInitialized())
>   {
>    Py_Initialize();
>   }
>   PyRun_SimpleString("import MyModule");
>   PyRun_SimpleString("MyModule.init(1, 'c:\\diag\\dsp.ldr', 0x5555)");
>   PyRun_SimpleString("MyModule.MemoryTest(1, 0, 1)");
>   PyRun_SimpleString("MyModule.Shutdown()");
>   Py_Finalize();
> But I'd like to pass application variables instead of the hard-coded 1, 0, 1
> and 0x5555, such as:
> int appInt = 0x5555;
> PyRun_SimpleString("MyModule.init(1, 'c:\\diag\\dsp.ldr', appInt)");
> I know I'm missing something fundamental here.  Please advise.
> Also, is there a mailing list that I should join for this topic?
> Thank you!!!!!!
> Alicia.

More information about the Python-list mailing list