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?

you are viewing a single comment's thread
view the rest of the comments
[–] 3 points 1 year ago (5 children)

Quick template: https://files.catbox.moe/g5tcy5.tar

Also, don't delete this post. Others might need this information too.

  • source
  • hideshow 5 child comments
  • [–] [S] 2 points 1 year ago (4 children)

    ofc. It's weird how no one asked this before with how little help articles mention __init__.py.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 4 points 1 year ago (3 children)

    https://docs.python.org/3/tutorial/modules.html#packages

    The __init__.py files are required to make Python treat directories containing the file as packages (unless using a namespace package, a relatively advanced feature). This prevents 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, described later.

  • source
  • parent
  • hideshow 3 child comments
  • [–] [S] 0 points 1 year ago (2 children)

    Are you accusing me of not reading tfm? because I did, but was expecting this specific situation to be clarified on stackOverFlow, geeksForGeeks or somewhere similar. Since it seemed like this import pattern should be common.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 1 year ago (1 child)

    I was pointing out a part of the documentation that you may have overlooked. In good faith, I might add, because the documentation is comprehensive but horribly signposted. Everything I wrote in my first comment is there, but in a less human, more technical phrasing.

  • source
  • parent
  • hideshow 1 child comment