Assuming def my_function(): is located in my_apps.views I would like to import "my_function" dynamically without using something like exec or eval.
Is there anyway to accomplish this. I'm looking to do something similar to:
my_function = import_func("my_apps.views.my_function")
my_function() ... code is executed
I just wrote this code and seems what a lot of people need, so even if later i show it
Note that
Python 2.7
added theimportlib
module, convenience wrappers for__import__()
and a backport of 3.1 feature.you want
If you happen to know the name of the function at compile time, you can shorten this to
This will load
my_apps.views
and then assign itsmy_function
attribute to the localmy_function
.If you are sure that you only want one function, than this is acceptable. If you want more than one attribute, you can do:
as it is more readable and saves you some calls to
__import__
. again, if you know the names, the code can be shortened as above.You could also do this with tools from the imp module but it's more complicated.