What if was gibing a string like this: 'math.ceil', and i had to import the function(not the module) dynamically(from the string), how can i do that? import_module is for importing... modules, not functions.
2010/9/10 Bachir <[email protected]> > thanks, éthat's really an awesome explanation. thanks > > 2010/9/10 Tom Evans <[email protected]> > > On Fri, Sep 10, 2010 at 1:05 AM, Bachir <[email protected]> wrote: >> > The problem is not the lack of information, the real problem is that i >> don't >> > know what to search for . >> > >> > 2010/9/9 bruno desthuilliers <[email protected]> >> >> >> >> >> >> On 9 sep, 03:46, maroxe <[email protected]> wrote: >> >> > Hi, I am trying to understand an other magic thing about django: it >> >> > can convert strings to modules. In settings.py, INSTALLED_APPS is >> >> > declared like that: >> >> > >> >> > INSTALLED_APPS = ( >> >> > 'django.contrib.auth', >> >> > 'django.contrib.contenttypes', >> >> > 'django.contrib.sessions', >> >> > ) >> >> > All it contains is strings. But django will convert those strings to >> >> > modules and import them later. >> >> > >> >> > I want to do be able to do the same thing. but i don't know how. >> >> Well, OK. Lets break down how one could find this out, because you >> *did* have everything you needed to find this out yourself. >> >> You wanted to turn a string into a module name, so you can import from it. >> You noticed that django does the same thing with the setting >> INSTALLED_APPS. >> You have the django source code. >> >> So, the first thing to do is to search the django source code for >> INSTALLED_APPS. >> For this, I tend to use "ack", which is like grep but better for >> programmers. >> This returns lots of files - its used in lots of places. Look at the >> list of files returned and choose one that looks appropriate to look >> at. >> >> I chose "core/management/commands/syncdb.py", as I knew this file is >> responsible for creating db models - its the code that runs when you >> run ./manage.py syncdb. >> >> Looking at how INSTALLED_APPS is used in that file: >> >> > for app_name in settings.INSTALLED_APPS: >> > try: >> > import_module('.management', app_name) >> > except ImportError, exc: >> >> Ah, so theres a function called import_module. Where does that come from? >> >> > from django.utils.importlib import import_module >> >> Ah, so now I know how it does it's import magic, and I know how to >> import it myself. I can now play around with this in the shell, so I >> know I have the usage right: >> >> >>> from django.utils.importlib import import_module >> >>> mod = import_module('math') >> >>> mod.ceil >> <built-in function ceil> >> >> There, not so hard, is it? You did know what to search for, as you >> included it in your original question.. >> >> Cheers >> >> Tom >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<django-users%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/django-users?hl=en. >> >> > -- You received this message because you are subscribed to the Google Groups "Django users" 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-users?hl=en.

