Jean-Michel Pichavant wrote: > Johny wrote: >> I have this directory structure >> >> C: >> \A >> __init__.py >> amodule.py >> >> \B >> __init__.py >> bmodule.py >> >> \D >> __init__.py >> dmodule.py >> >> and I want to import bmodule.py >> C:\>cd \ >> >> C:\>python >> Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit >> (Intel)] on win >> 32 >> Type "help", "copyright", "credits" or "license" for more information. >> >>>>> from A.B import bmodule >>>>> >> I am bmodule >> C:\> >> >> so far so good. Now I would like to import bmodule but if the current >> directory is \D subdirectory. >> >> C:> cd \A\B\D >> C:\A\B\D> >> C:\A\B\D>python >> Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit >> (Intel)] on win >> 32 >> Type "help", "copyright", "credits" or "license" for more information. >> >>>>> import sys >>>>> sys.path.append('C:\\A') >>>>> from A.B import bmodule >>>>> >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> ImportError: No module named A.B >> >> C:\> >> >> so I can not import a module from the parent directory? Or where did I >> make an error? >> Thanks for help >> >> L. >> > try > > import sys > sys.path.append('C:\\') > from A.B import bmodule > is there any 'automatic' way of finding the top level directory?basically the 'top level directory is the first directory going upwards, that doesn't contain a __init__.py file.
of course you could do this 'manually' by doing: # assume, that this module is A.amodule import sys import os # I'd love to have a similiar automatic construct if __name__ == "__main__": level = 1 # or function locating how far to go up before # finding a dir, whcih does not contain a __init__.py mydir = os.path.split(__file__)[0] topdir = os.path.join( mydir,*(("..",)*level)) abstop = os.path.abspath(topdir) sys.path.append(abstop) ## now you can import with the normal module paths import A.blo print "and I found blo",dir(A.blo) bye N -- http://mail.python.org/mailman/listinfo/python-list