Trying to embed python into C, help!

disgracelands disgracelands at quietblue.co.uk
Sun Aug 10 12:18:32 EDT 2003


Heh, i had a sneaking suspicion that my question would be hard to
understand, forming it around bad grammer really didn't help either, doh.

OK thanks, your guess was correct and i was working under the false
assumption that the dlls were necessary to create modules for python.  To be
honest the entire idea of using dlls puzzled me since python isn't platform
dependant but thats the way its done in the tutorials. The chances are that
i've mis-interpreted something.

I've had a quick look and it seems like PyRun_SimpleString() and
PyRun_String() should get me up and running pretty quick.  Thanks again,
you've just saved me a tonne of frustration and a fair ammount of time to
boot.

Cheers,
dis


"Alex Martelli" <aleax at aleax.it> wrote in message
news:T6tZa.36779$an6.1289737 at news1.tin.it...
> disgracelands wrote:
>
> > I've been looking at using python and it's been going fairly well so
far,
> > i can call C from python and python from C fine but now i've hit a snag
> > and i'm wondering how you guys have got around it.
>
> To be honest, I'm having some trouble understanding exactly what
> your snag IS.
>
>
> > I have to initialise python inside my C project so that i can make calls
> > to python modules whenever i need to but i can't create a dll for the
> > project as it's got to produce an exe or at least a lib so that i can
> > execute the initialisation code.
>
> ...but why ever would you WANT to "create a dll" and what does THAT have
> to do with "initializing Python"...?
>
>
> > The only way around it would seem to be to create a
> > separate dll project containing the python callback code that can then
> > import it to python and have my C code load it too.  The problem with
this
>
> I'm trying to guess, from this sentence, that you labor under a
> mis-apprehension that your C code, which embeds Python, can only
> provide "Python extension modules" by supplying them as a separate
> DLL.  Is that what you mean by "the python callback code that can then
> import it to python"...?  Sorry if my guess is way off, but really I
> find this sentence unparsable and incomprehensible.
>
> Anyway, if that's your 'snag', rest assured that there is no such
> need.  Your C program can extend Python, creating modules that
> Python code can import, without any DLL whatsoever.  For example,
> get the source distribution of Python [I don't think the demos
> come with e.g. the Windows installer binary] and look at source
> file Demo/embed/demo.c -- you'll see it adds to Python, as a
> static module, a module 'xyzzy' from which Python code could
> import and call, without arguments, a function 'foo'.  Unfortunately
> the Python code executed in the demo doesn't show that ability
> being used, but at least you'll see 'xyzzy' listed among the
> "builtin modules"; just add two lines such as:
>
>         PyRun_SimpleString("import xyzzy\n");
>         PyRun_SimpleString("print 'the answer is', xyzzy.foo()\n");
>
> among the other calls to PyRun_SimpleString, and you'll see it work.
>
>
> Alex
>
>






More information about the Python-list mailing list