'psyco' problem

Hannu Kankaanp?? hanzspam at yahoo.com.au
Sun Oct 10 11:57:35 CEST 2004

Paulo da Silva <psXdaXsilva at esotericaX.ptX> wrote in message news:<1097371920.617950 at mystique.esoterica.pt>...
> When running the following program:
> #! /bin/env python
> # -*- coding: iso-8859-15 -*-
> import psyco
> psyco.full()
> def main():
>      n=eval("123+456")
>      print n
> if __name__ == "__main__":
>      main()
> I got:
> ./tp.py:7: warning: eval()/execfile() cannot see the locals in functions
> bound by Psyco; consider using eval() in its two- or three-arguments form
>    def main():
> 579
> What does this mean? Is there anything wrong?
> Thank you.

It means you can't do this if main() is bound by Psyco:

def main():
    print eval("123+x")

because as the warning message says, Psycoed eval() cannot see the
locals (x here). And it suggest that you should consider using
eval() in its two- or three-arguments form, which is described
in the Python Library Reference. So with Psyco, you might use

y = 3
def main():
    print eval("y+x", globals(), {'x':x})

But in your case, it of course doesn't matter because in
the expression 123+456 you aren't using any locals.

More information about the Python-list mailing list