2013-10-07 1 views
0

У меня есть существующий простой оператор импорта выглядит следующим образом:Rewrite от й оператора импорта у использовать import_module

from booking import Booking 

который я хотел бы переписать принимать динамический paramters через importlib библиотеку.

Мои попытки были варианты следующие:

from importlib import import_module 

mymodule = import_module("Booking", "booking") 

Что все поднять исключение:

ImportError: No module named Booking

+0

«бронирование» - это пакет или простой модуль? –

+0

Является ли 'Бронирование' классом? – Milo

+0

«бронирование» - это пакет, а «Бронирование» - это класс –

ответ

3

Я использую эту функцию для импорта классов динамически из модуля:

def import_class(modulename, classname): 
    ''' Returns imported class. ''' 
    try: 
     return getattr(__import__(modulename, globals(), locals(), [classname], -1), classname) 
    except AttributeError: 
     print 'Error in importing class. "%s" has no class "%s"' % (modulename, classname) 
     return None 
    except ImportError as e: 
     print 'Error in importing class: %s' % (e) 
     return None 
+0

Спасибо @Milo. Моя реализация таким образом стала: 'mymodule = import_class (« бронирование »,« бронирование »)', и я уверен, что это будет использоваться во многих проектах! –