Import problem

News123 news123 at free.fr
Mon Mar 8 17:21:08 EST 2010


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


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /