Importing Module To Use Variables In A Second Module

Steve Holden steve at holdenweb.com
Thu Sep 27 18:17:26 EDT 2007


rshepard at nospam.appl-ecosys.com wrote:
>   I'm stymied by what should be a simple Python task: accessing the value of
> a variable assigned in one module from within a second module. I wonder if
> someone here can help clarify my thinking. I've re-read Chapter 16 (Module
> Basics) in Lutz and Ascher's "Learning Python" but it's not working for me.
> 
>   In one module (the "source"), variablePage.py, three wxPython widgets
> display values that are assigned to variables: curVar, UoDlow, and UoDhigh.
> I want to display then in equivalent widgets on a wxPython notebook tab in a
> different module, the "importer."
> 
>   At the top of the importer module I have:
> 
> from variablePage import curVar, UoDlow, UoDhigh
> 
> and I try to display the values of those variables in widgets on this page.
> But, python complains:
> 
>     from variablePage import curVar, UoDlow, UoDhigh
> ImportError: cannot import name curVar
> 
>   I've also tried
> 
> import variablePage as VP
> 
>   and referenced the variables as VP.curVar, VP.UoDlow, and VP.UoDhigh, but
> python still doesn't like this:
> 
>   File "/data1/eikos/fuzSetPage.py", line 364, in loadParVar
>     first = VP.curVar
> AttributeError: 'module' object has no attribute 'curVar'
> 
>   Both of these forms are used in the book (pages 260-261) in simple
> examples. I also get errors if I try importing using the class name before
> the variable name.
> 
>   A clue stick would be very helpful since I am not seeing just what I'm
> doing incorrectly.
> 
> Rich

Self-evidently you are *not* creating the variables you think you are in 
the variablePage module. Have you tried an interactive test? Try this at 
the interpreter prompt:

 >>> import variablePage
 >>> dir(variablePage)

and you will see exactly what names the module is defining in its 
namespace. You could also try

 >>> variablePage.__file__

to make sure that you are importing the module you think you are.

Otherwise, do you have circular imports? In other words, does the 
variablePage module by any chance import the module that's trying to 
import *it*? That's also a fruitful source of errors.

regards
  Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd           http://www.holdenweb.com
Skype: holdenweb      http://del.icio.us/steve.holden

Sorry, the dog ate my .sigline




More information about the Python-list mailing list