summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/db/migrations/writer.py6
-rw-r--r--tests/migrations/migrations_test_apps/without_init_file/migrations/.keep0
-rw-r--r--tests/migrations/test_writer.py1
3 files changed, 7 insertions, 0 deletions
diff --git a/django/db/migrations/writer.py b/django/db/migrations/writer.py
index dee867929d..71f81e9e2d 100644
--- a/django/db/migrations/writer.py
+++ b/django/db/migrations/writer.py
@@ -158,6 +158,12 @@ class MigrationWriter(object):
# See if we can import the migrations module directly
try:
migrations_module = import_module(migrations_package_name)
+
+ # Python 3 fails when the migrations directory does not have a
+ # __init__.py file
+ if not hasattr(migrations_module, '__file__'):
+ raise ImportError
+
basedir = os.path.dirname(migrations_module.__file__)
except ImportError:
app_config = apps.get_app_config(self.migration.app_label)
diff --git a/tests/migrations/migrations_test_apps/without_init_file/migrations/.keep b/tests/migrations/migrations_test_apps/without_init_file/migrations/.keep
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/migrations/migrations_test_apps/without_init_file/migrations/.keep
diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py
index cd59938314..8f8437faf9 100644
--- a/tests/migrations/test_writer.py
+++ b/tests/migrations/test_writer.py
@@ -215,6 +215,7 @@ class WriterTests(TestCase):
test_apps = [
'migrations.migrations_test_apps.normal',
'migrations.migrations_test_apps.with_package_model',
+ 'migrations.migrations_test_apps.without_init_file',
]
base_dir = os.path.dirname(os.path.dirname(__file__))