#12231: The project path is incorrectly build, it wipe the namespace -------------------------------------+-------------------------------------- Reporter: mleduc | Owner: nobody Status: new | Milestone: 1.2 Component: Core framework | Version: SVN Resolution: | Keywords: package Stage: Unreviewed | Has_patch: 1 Needs_docs: 0 | Needs_tests: 0 Needs_better_patch: 0 | -------------------------------------+-------------------------------------- Changes (by Alex):
* needs_better_patch: => 0 * needs_tests: => 0 * needs_docs: => 0 Old description: > If by example your django is in an egg like > > my.site.project > > If you call the django core execution manager with: > > mod = __import__('my.site.project') > django.core.management.execute_manager(mod) > > Your project will not be found cause the django core is declaring the > main DJANGO_SETTINGS_MODULE with: > > django.core.management.__init__: > ... > project_directory, settings_filename = os.path.split(p) > if project_directory == os.curdir or not project_directory: > project_directory = os.getcwd() > project_name = os.path.basename(project_directory) > ... > os.environ['DJANGO_SETTINGS_MODULE = '%s.%s' % (project_name, > settings_name) > ... > > The project_name variable represent only the first level of the project > egg. It could not work with a multilevel package and we now have to use > the variable 'original_settings_path' which is just optional. > > The solution maybe to use the special __package__ variable of the > settings_mod module. > > I attach a patch with this ticket whick correct this problem. New description: If by example your django is in an egg like {{{ my.site.project }}} If you call the django core execution manager with: {{{ mod = __import__('my.site.project') django.core.management.execute_manager(mod) }}} Your project will not be found cause the django core is declaring the main DJANGO_SETTINGS_MODULE with: django.core.management.__init__: {{{ ... project_directory, settings_filename = os.path.split(p) if project_directory == os.curdir or not project_directory: project_directory = os.getcwd() project_name = os.path.basename(project_directory) ... os.environ['DJANGO_SETTINGS_MODULE = '%s.%s' % (project_name, settings_name) ... }}} The project_name variable represent only the first level of the project egg. It could not work with a multilevel package and we now have to use the variable 'original_settings_path' which is just optional. The solution maybe to use the special __package__ variable of the settings_mod module. I attach a patch with this ticket whick correct this problem. Comment: Please use preview. -- Ticket URL: <http://code.djangoproject.com/ticket/12231#comment:1> 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 django-upda...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=.