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?


As others have mentioned, I would add a
src/__init__.pyfile to turnsrcinto a package.Then, inside
dep1.py, you can do a relative import with:I’m not sure why you’re using
asto make the module name longer? Usually, if I use it at all, I use it make things shorter. Anyway, once you’ve importeddep2, you can calldep2.some_fn(). You could also go:Yeah, that’s the solution I asked about (last line of my question). I was just trying to make sure that this is ok and won’t tangle up my code later on.
That was just for the example (clarifying order of import). The actual code has imports such as
from src.formatter import Formatter as fmt; always making the name shorter.Thanks for the suggestions
I guess the main issue there is Python doesn’t like circular dependencies? Like if you try to import
dep2fromdep1anddep1fromdep2, you’re going to have a problem. You’d essentially have to refactor your code to have adep3that both can import to use the common functionality I guess.