summaryrefslogtreecommitdiff
path: root/django/utils/autoreload.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/utils/autoreload.py')
-rw-r--r--django/utils/autoreload.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/django/utils/autoreload.py b/django/utils/autoreload.py
index 7ca0d68fae..cb7cd1c725 100644
--- a/django/utils/autoreload.py
+++ b/django/utils/autoreload.py
@@ -114,7 +114,15 @@ def iter_modules_and_files(modules, extra_files):
# During debugging (with PyDev) the 'typing.io' and 'typing.re' objects
# are added to sys.modules, however they are types not modules and so
# cause issues here.
- if not isinstance(module, ModuleType) or getattr(module, '__spec__', None) is None:
+ if not isinstance(module, ModuleType):
+ continue
+ if module.__name__ == '__main__':
+ # __main__ (usually manage.py) doesn't always have a __spec__ set.
+ # Handle this by falling back to using __file__, resolved below.
+ # See https://docs.python.org/reference/import.html#main-spec
+ sys_file_paths.append(module.__file__)
+ continue
+ if getattr(module, '__spec__', None) is None:
continue
spec = module.__spec__
# Modules could be loaded from places without a concrete location. If