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
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__))