With a project structure like this:
├─main.py
└─src
├─dep1.py
└─dep2.py
where the contents of each file is as follows:
main.py: import src.dep1 as firstdep; print("Total success")
dep1.py: import dep2 as seconddeb; print("success 1/3")
dep2.py: print("success 2/3")
Is the best way to do this creating an __init__.py file in src and importing src.dep2 in dep1.py? or is this a bad idea?


If you have to import a directory structure, you should make each directory a module by creating an
__init__.pyfile in them, and use relative import statements. I usually have onemain.pyas the entry point, which imports alibmodule that contains all of the program logic.You can import the
libdirectory as a module:main.py:from lib import some_fnWithin any module, though, you should use relative import statements to import from files and submodules, and regular import statements to import packages from the system or the venv:
lib/__init__.py:from .module_content import some_fn # import from a file from .submodule import some_other_fn # import from a submodule directory from os.path import join # import from an installed packageItems that you define in
__init__.pyor import into it will be available to import from the module:from .submodule import some_fn. Otherwise, you can import an item from a file by specifying the full path:from .submodule.submodule_content import some_fn.You can also import an item from a parent package using the
..prefix:from ..some_other_submodule import some_fn.That will be very useful. Thanks for your quick reply!