Python Relative Imports Only Work With Django
You can't simply execute main.py from dir2; you'll need a script of sorts that lives outside your whole app package, and then if you import app.dir2.main, you'll get app.dir1.utils as well through the relative import. 
Create a script that does from app.dir2 import main, then run that outside the app package. And use the from ..dir1 import utils in structure in main.py, with 2 leading dots.

I can't give you the exact reason why this is, but I think essentially any script/module executed inside a directory is not going to look up the directory chain to see if it's part of a module. That is, the main.py module will not look into the app directory and think "hey, I'm part of a module, and I can (relatively) import dir1 as well.
Hi I use Django frequently and am constantly using relative imports along the lines of from .models import XXX  for XXX in a models folder or from . import views for a file named views.py in same directory and it works fine there.  But when I create my own Python application with a directory structure such as:
app/ containing __init__.py, dir1, and dir2
dir1/ containing  __init__.py, utils.py
dir2/ containing  __init__.py, main.py
then say inside of main.py in dir2 I do from .dir1 import utils or even from ..dir1 import utils I get an error like: ValueError: Attempted relative import of non-package 
Which I don't understand as there is an __init__.py in all the directories.  Why does it always work fine in django projects but not when I start my own python project from scratch?  
What should I be doing to import something like this?  Obviously absolute imports are not preferred, but I can't get relatives to work.  All the answers on SO and other sites that I have found never seems to provide a solution, or at least one that worked for me.  Can someone please just tell me what the correct way to do an import like this is?  Import a python file from a directory that is a sibling of the directory which contains the file I'm calling import from.  
Help would be much appreciated.  Perhaps for once we can get a nice short answer that is actually to the point. 
All I really need is for someone to show me what I should be using to do this import, and secondarily explain why I don't get this error in django but get it here.
I just want to get the imports working, every time I start my own python application outside Django (because it isn't web based) I have this issue and every answer I find is no help.
EDIT:
The problem I'm having is importing files from anything but a child directory or files within the same directory.  The places I have the issue are when the file I need is in a sibling or parent directory.   I need help making the import work for that.