On Mar 6, 2:45 am, Thomas Guettler <[EMAIL PROTECTED]> wrote:
> Malcolm Tredinnick schrieb:> On Wed, 2008-03-05 at 15:32 +0100, Thomas 
> Guettler wrote:
> > [...]
>
> >> No, it gets imported more then once: (Answer of Malcolm):
> >>http://www.mail-archive.com/[EMAIL PROTECTED]/msg39061.html
>
> > Read that carefully and you'll see the answer I have was "maybe, I'm not
> > sure" and it's only in some circumstances. I haven't done the analysis
> > to work out if we do reimport as part of the modpython path, although I
> > can't think why it would be reimporting.
>
> I had this problem when I used mod_python. Now I use mod_wsgi and it
> does not
> happen. But if I run a test it still happens.
>
> The first time __name__ is 'settings' and the second time it is
> 'myproj_foo.settings'

In which case it is because of the adding of both the parent directory
and the project directory to sys.path, plus some module somewhere (not
in project directory) importing just 'settings', instead of
'myproj_foo.settings'.

People who always properly qualify module references in urls.py and
elsewhere via the name of the project wouldn't have this problem. It
is only where people try and write code which is somehow independent
of the project name where it would be an issue.

Graham

> # added to settings.py
> import datetime
> import traceback
> fd=open('/tmp/import-settings.log', 'a')
> fd.write('%s settings gets imported __name__: %s\n%s' %
> (datetime.datetime.now(), __name__, ''.join(traceback.format_stack())))
> fd.close()
> '''
>
> # Command:
> ./manage.py test myproj.ModifyTest.testFoo
>
> ### output:
> 2008-03-05 16:38:39.945759 settings gets imported __name__: settings
>   File "./manage.py", line 4, in <module>
>     import settings # Assumed to be in the same directory.
>   File "/localhome/modw/myproj_foo/settings.py", line 148, in <module>
>     fd.write('%s settings gets imported __name__: %s\n%s' %
> (datetime.datetime.now(), __name__, ''.join(traceback.format_stack())))
> 2008-03-05 16:38:39.950503 settings gets imported __name__:
> myproj_foo.settings
>   File "./manage.py", line 11, in <module>
>     execute_manager(settings)
>   File "/localhome/modw/myproj_foo/django/core/management/__init__.py",
> line 272, in execute_manager
>     utility.execute()
>   File "/localhome/modw/myproj_foo/django/core/management/__init__.py",
> line 219, in execute
>     self.fetch_command(subcommand).run_from_argv(self.argv)
>   File "/localhome/modw/myproj_foo/django/core/management/__init__.py",
> line 172, in fetch_command
>     app_name = get_commands(self.user_commands,
> self.project_directory)[subcommand]
>   File "/localhome/modw/myproj_foo/django/core/management/__init__.py",
> line 86, in get_commands
>     for app_name in settings.INSTALLED_APPS:
>   File "/localhome/modw/myproj_foo/django/conf/__init__.py", line 28, in
> __getattr__
>     self._import_settings()
>   File "/localhome/modw/myproj_foo/django/conf/__init__.py", line 59, in
> _import_settings
>     self._target = Settings(settings_module)
>   File "/localhome/modw/myproj_foo/django/conf/__init__.py", line 85, in
> __init__
>     mod = __import__(self.SETTINGS_MODULE, {}, {}, [''])
>   File "/localhome/modw/myproj_foo/settings.py", line 148, in <module>
>     fd.write('%s settings gets imported __name__: %s\n%s' %
> (datetime.datetime.now(), __name__, ''.join(traceback.format_stack())))
>
> to Patryk: Look at your code again, it will never raise:
>
> '''
> imported = False
> if imported:
>     raise Exception, "already imported!"
> ...
>
> '''
>
> --
> Thomas Guettler,http://www.thomas-guettler.de/
> E-Mail: guettli (*) thomas-guettler + de
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to