The __init__.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case, __init__.py can just be an empty file, but it can also execute initialization code for the package or set the __all__ variable. An example of the __init__.py file:
from math import sin from my_package import my_func
The above code ensures that the imported functions are available in the package's modules when it is imported as it is defined in the __init__.py file. You can read more about __init__.py at https://mikegrouchy.com/blog/2012/05/be-pythonic-__init__py.html