The directory structure:
[app]
start.py
import package1
[package1]
__init__.py
print('Init package1')
import module1
import subpackage1
module1.py
print('package1.module1')
import package1 # this works OK
[subpackage1]
__init__.py
print('Init package1.subpackage1')
import module1
module1.py
print('Init package1.subpackage1.module1')
#from package1 import subpackage1 # ImportError: cannot import name subpackage1
#from .. import subpackage1 # ImportError: cannot import name subpackage1
#import . as subpackage1 # SyntaxError: invalid syntax
import package1.subpackage1 as subpackage1 # AttributeError: 'module' object has no attribute 'subpackage1'
To avoid problems caused by circular imports in subpackage1.module1
i want to import module subpackage1
in order to refer to other modules from subpackage1
in form subpackage.module2
. Because if i do from . import module2
the reference to module2
could not yet exist in subpackage1
when i try to this import.
I have tried 4 different approaches - none of them worked - see the comments in the code.
Any help?
Some time ago subpackage1
was top level package and it worked (see how this works in the source of package1.module1
. Now, when i moved it one level down - i have this problem... I know that i can add package1 dir to sys.path
, but that's ugly.