0

I have a directory structure like this in python:

- __init__.py (1) - folder1 - __init__.py (2) - folder2 - __init__.py (3) - file.py 

how can I expose file.py?

currently in __init__.py(2) I have:

from folder2 import file 

do I have to add in __init__.py(1)

from folder1 import file 

and do I have to add anything to __init__.py(3)?

2 Answers 2

1

These are all the imports you could do (you are not required to perform all of them, just the ones you need):

in __init__.py (1):

from .folder1.folder2 import file 

in __init__.py (2):

from .folder2 import file 

in __init__.py (3):

from . import file 

Beware that if you actually run one of those __init__.py files, the actual name for the running file will be "__main__" and the relative import will not work. If you intention is that, remove the first dot in the respective import sentence. However it is not always the best practice to run an in-package file because of this issues, but if you do, take note of this.

Alternatively you can do:

in __init__.py (1):

from .folder1 import file 

as long as you do also in __init__.py (2):

from .folder2 import file 

But you are not required to do that. However it is useful when you want to use file both in the __init__.py (2) and __init__.py (1). But if you don't need to use file in (2) then you can refer to first alternative.

Sign up to request clarification or add additional context in comments.

Comments

1
myproject |-app.py |-__init__.py |-folder1 |-__init__.py |-folder2 |-__init__.py |-file.py 

for example, we have app.py under folder project. In app.py, put the following lines on the top:

import sys sys.path.append("/path/to/myproject") # tells interpreter your myproject path from folder1.folder2 import file # imports your file.py module 

you dont have to modify the __init__.py files, just leave them empty and no matter how many python directories you have , you can always imports them in this way

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.