[Edu-sig] Strange transitive import problem

Peter Drake drake at lclark.edu
Mon Feb 12 17:59:27 CET 2007


I tried just tacking all of my procedural wrappers on to the end of  
your file so there would be no transitive import. Surprisingly, that  
didn't work. The trick you mention below DOES work, and I'll use that  
as a workaround.

A clue, then: it's not the transitive importing that causes the  
problem, it's the importing of a file that calls GraphWin().

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Feb 9, 2007, at 1:09 PM, John Zelle wrote:

> Peter,
>
> I should have caught this when you posted your file. There is a  
> bizarre import
> interaction that I am aware of, but can't say that I fully understand
> regarding my graphics library. It seems that Python imports are in  
> some-way,
> somewhat atomic, and with the way my graphics library is set up  
> this can
> produce this deadlock. I have a workaround for you. Move the  
> graphics setup
> code in your module into a function:
>
> def initGraphics():
>     global root
>     root = z.GraphWin()
>
>     print "If you can't see the graphics window,"
>     print "it's probably at the upper left"
>     print "of your screen, behind this one."
>
> Then call this function once at the start of your graphics  
> programs. This is
> what will now pop up the window. So your "junk" program becomes:
>
> from graphics2 import *
> print "imported graphics2"
> initGraphics()
> background("red")
>
> If someone has a better understanding of Python module imports and  
> why that
> causes a problem with my graphics package, I'd love to know how to  
> fix this
> problem rather than working around it.
>
> --John
>
>
> On Friday 09 February 2007 1:36 pm, Peter Drake wrote:
>> The graphics2.py file I supplied earlier (http://www.lclark.edu/
>> ~drake/courses/cs0/graphics2.py) is a procedural front-end for
>> Zelle's graphics.py.
>>
>> If I run the graphics2.py module, everything works fine, and I can
>> issue commands interactively.
>>
>> A problem happens if I write ANOTHER program, say junk.py:
>>
>> from graphics2 import *
>> print "imported graphics2"
>> background("red")
>>
>> When I run this (within IDLE), it hangs trying to import graphics2.
>> There is no error message or processor load, it just hangs.
>>
>> Can anyone explain (or reproduce) this behavior?
>>
>> Peter Drake
>> Assistant Professor of Computer Science
>> Lewis & Clark College
>> http://www.lclark.edu/~drake/
>>
>>
>>
>> _______________________________________________
>> Edu-sig mailing list
>> Edu-sig at python.org
>> http://mail.python.org/mailman/listinfo/edu-sig
>
> -- 
> John M. Zelle, Ph.D.             Wartburg College
> Professor of Computer Science    Waverly, IA
> john.zelle at wartburg.edu          (319) 352-8360
> _______________________________________________
> Edu-sig mailing list
> Edu-sig at python.org
> http://mail.python.org/mailman/listinfo/edu-sig


More information about the Edu-sig mailing list