I have a directory structure like this:
source\
  main\
    bar.py
    run.py
  A\
    foo.py
bar.py has functions which foo.py needs, so I use from bar import *, which works, as I've given foo.py the correct path to find bar.py.  I verify this by running foo.py and calling any of the functions from bar.py without appending bar next to it.  For example, if myFun is defined in bar.py, I can simply call myFun(...) in foo.py.  This works all great so far.  
run.py imports foo.py.  However, when I try to run a function from foo.py which in turn uses a function imported from bar.py, Python claims myFun(...) does not exist.  Note that myFun was originally defined in bar.py. 
NameError: global name 'myFun' is not defined
The only way I managed to resolve this was to copy myFun into foo.py, but that is not really a solution.  
 
    