En Fri, 09 Apr 2010 13:10:44 -0300, Alex Hall <mehg...@gmail.com> escribió:

c:\Python26>python.exe i:\arm\main.pyw
Traceback (most recent call last):
  File "i:\arm\main.pyw", line 3, in <module>
    import arm, network, weather, dict
  File "i:\arm\arm.py", line 4, in <module>
    import config
  File "i:\arm\config.py", line 4, in <module>
    from main import exitProgram
  File "i:\arm\main.pyw", line 3, in <module>
    import arm, network, weather, dict
  File "i:\arm\network.py", line 4, in <module>
    arm.ready()
AttributeError: 'module' object has no attribute 'ready'


I realize it may be odd to import from main.pyw, but I do not think
that could be causing the problem... could it?

Yes, it *is* a problem. Note the traceback sequence: main imports arm, arm imports config, config imports arm *again* (which is only partially initialized), arm imports network, and network tries to use arm.ready and fails.

Try to organize your modules hierarchically, so modules higher in the hierarchy may import (and use) other modules lower in the hierarchy, but not the other way around. Doing it that way helps also to make clear the intent of each module (and class). The 'main' script should be at the top of the hierarchy: 'main' may import anything, but no one may import 'main'. Put your high-level modules below it; they may use other low-level ones.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to