PyRun_SimpleString problem.

Gordon McMillan gmcm at hypernet.com
Wed Nov 10 18:11:46 CET 1999


"Arinte" writes:

> I am trying to run a python file from a dll.  When I run the file
> w/ PyRun_AnyFile it works fine.  But, when I try to run the code
> line by line w/ PyRun_SimpleString I get this error on function
> definitions.
> 
> def bottle(n):
>   File "<string>", line 1
>     def bottle(n):
>                 ^
> SyntaxError: unexpected EOF while parsing
>     if n == 0: return "no more bottles of beer"
>   File "<string>", line 1
>     if n == 0: return "no more bottles of beer"
> 
> Can I run files line by line if they define functions?  If so,
> how?

Nope. Can't do it with exec either. Even the interactive 
interpreter can't get away with it. You can only exec / eval a 
complete syntactic unit. You could look at a shell (eg, 
code.py) to see how's it done interactively, (normally append 
the line to a buffer, try running the buffer; if it worked, clean out 
the buffer). But if PyRun_AnyFile works, I wonder why you're 
even trying PyRun_SimpleString? Python would much prefer 
to work at the file level.

- Gordon




More information about the Python-list mailing list