Найти - Пользователи
Полная версия: Python 3.2: Динамический импорт
Начало » Python для новичков » Python 3.2: Динамический импорт
1 2
Андрей Светлов

iBiZoNiX

Python 3.2.2 (default, Sep  5 2011, 21:17:14) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> __import__('../closure.py')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: Import by filename is not supported.
>>>
ValeriyB
Спасибо за наводки. Получилось.

Сделал используя словарь, вышло весьма удобно:

        plugins = {'plugins/1stplugin' : '1stPluginClass', 'plugins/2ndplugin' : '2ndPluginClass'}
        self.modules = {}
        for mod_path, cls_name in plugins .items():
            module = importlib.import_module(mod_path)
            self.modules[cls_name] = getattr(module, cls_name)
        def declareClass(self, cls_name):
            print(self.modules[cls_name])
      
        >>> print(self.modules)
        {'1stPluginClass' : <class 'plugins.1stPluginClass'>, '2ndPluginClass' : <class 'plugins.2ndPluginClass'>}
        >>> self.declareClass('1stPluginClass')
        <class 'plugins.1stPluginClass'>
iBiZoNiX
Андрей Светлов
Странно, у меня бот по такому принципу работает на Python 3.2.2
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB