desea
my_function = getattr(__import__('my_apps.views'), 'my_function')
Si por casualidad usted conoce el nombre de la función en tiempo de compilación, se puede acortar este a
my_function = __import__('my_apps.views').my_function
Esto cargará my_apps.views
y luego asignará su atributo my_function
al my_function
local.
Si está seguro de que solo desea una función, entonces esto es aceptable. Si desea más de un atributo, puede hacerlo:
views = __import__('my_apps.views')
my_function = getattr(views, 'my_function')
my_other_function = getattr(views, 'my_other_function')
my_attribute = getattr(views, 'my_attribute')
ya que es más fácil de leer y le ahorra algunas llamadas a __import__
. nuevamente, si conoce los nombres, el código se puede acortar como se indica arriba.
También puede hacerlo con las herramientas del módulo imp, pero es más complicado.
habrá problemas (AttributeError) con las declaraciones anteriores __import__. Import devuelve el primer módulo (my_apps) a menos que se especifique una lista de importación. Necesitas algo como: 'my_function = __import __ ('my_apps.views', globals(), locals(), ['my_function']). My_function' Ver [python doc about __import__] (https: //docs.python .org/2/library/functions.html #__ import__) – marco
¡La solución publicada por marco funciona para mí! Gracias – giopromolla
Para mí, esto intenta importar la función de 'my_apps' en lugar de' my_apps.views'. – oarfish