#13512: syncdb fails on application with no models defined
---------------------------------------------------+------------------------
          Reporter:  Atr3ides                      |         Owner:  nobody  
            Status:  closed                        |     Milestone:  1.2     
         Component:  Database layer (models, ORM)  |       Version:  1.2-beta
        Resolution:  worksforme                    |      Keywords:          
             Stage:  Unreviewed                    |     Has_patch:  0       
        Needs_docs:  0                             |   Needs_tests:  0       
Needs_better_patch:  0                             |  
---------------------------------------------------+------------------------
Old description:

> Traceback (most recent call last):
>   File "src/project/manage.py", line 18, in <module>
>     management.execute_manager(settings)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/core/management/__init__.py", line 438, in
> execute_manager
>     utility.execute()
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/core/management/__init__.py", line 379, in execute
>     self.fetch_command(subcommand).run_from_argv(self.argv)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/core/management/base.py", line 191, in run_from_argv
>     self.execute(*args, **options.__dict__)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/core/management/base.py", line 217, in execute
>     self.validate()
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/core/management/base.py", line 245, in validate
>     num_errors = get_validation_errors(s, app)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/core/management/validation.py", line 28, in
> get_validation_errors
>     for (app_name, error) in get_app_errors().items():
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/db/models/loading.py", line 146, in get_app_errors
>     self._populate()
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/db/models/loading.py", line 61, in _populate
>     self.load_app(app_name, True)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/db/models/loading.py", line 78, in load_app
>     models = import_module('.models', app_name)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/utils/importlib.py", line 35, in import_module
>     __import__(name)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/piston/models.py", line 28, in <module>
>     admin.site.register(Nonce)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/contrib/admin/sites.py", line 90, in register
>     validate(admin_class, model)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/contrib/admin/validation.py", line 20, in validate
>     models.get_apps()
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/db/models/loading.py", line 115, in get_apps
>     self._populate()
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/db/models/loading.py", line 61, in _populate
>     self.load_app(app_name, True)
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/db/models/loading.py", line 83, in load_app
>     if not module_has_submodule(app_module, 'models'):
>   File "/home/user/projects/project/ve/lib/python2.6/site-
> packages/django/utils/module_loading.py", line 15, in
> module_has_submodule
>     for entry in package.__path__:  # No __path__, then not a package.
> AttributeError: 'module' object has no attribute '__path__'

New description:

 {{{
 Traceback (most recent call last):
   File "src/project/manage.py", line 18, in <module>
     management.execute_manager(settings)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/core/management/__init__.py", line 438, in execute_manager
     utility.execute()
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/core/management/__init__.py", line 379, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/core/management/base.py", line 191, in run_from_argv
     self.execute(*args, **options.__dict__)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/core/management/base.py", line 217, in execute
     self.validate()
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/core/management/base.py", line 245, in validate
     num_errors = get_validation_errors(s, app)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/core/management/validation.py", line 28, in
 get_validation_errors
     for (app_name, error) in get_app_errors().items():
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/db/models/loading.py", line 146, in get_app_errors
     self._populate()
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/db/models/loading.py", line 61, in _populate
     self.load_app(app_name, True)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/db/models/loading.py", line 78, in load_app
     models = import_module('.models', app_name)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/utils/importlib.py", line 35, in import_module
     __import__(name)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/piston/models.py", line 28, in <module>
     admin.site.register(Nonce)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/contrib/admin/sites.py", line 90, in register
     validate(admin_class, model)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/contrib/admin/validation.py", line 20, in validate
     models.get_apps()
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/db/models/loading.py", line 115, in get_apps
     self._populate()
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/db/models/loading.py", line 61, in _populate
     self.load_app(app_name, True)
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/db/models/loading.py", line 83, in load_app
     if not module_has_submodule(app_module, 'models'):
   File "/home/user/projects/project/ve/lib/python2.6/site-
 packages/django/utils/module_loading.py", line 15, in module_has_submodule
     for entry in package.__path__:  # No __path__, then not a package.
 AttributeError: 'module' object has no attribute '__path__'
 }}}

Comment (by kmtracey):

 Sounds like (though details of the traceback have changed in the interim):
 http://code.djangoproject.com/ticket/11696#comment:12. Prior to the
 introduction of `module_has_submodule`, things found in INSTALLED_APPS
 that did not have a `__path__` were just ignored. The check was originally
 put in for "odd things" like eggs (though it's not necessary for eggs);
 the original person who hit a problem which caused the check to be added
 actually had a completely unnecessary non-app listed in INSTALLED_APPS. If
 there's a valid reason for having things in INSTALLED_APPS that don't have
 a `__path__` then we can probably deal with it in `module_has_submodule`,
 but I haven't heard that reason yet. The one person who originally ran
 into the issue when the `__path__` check was put in acknowledged it was
 caused by an error in their INSTALLED_APPS.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/13512#comment:2>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to