Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (4)
  • Как разделить строку на список с элементами, сгруппированными по парам (Python)?

    @brake
    >>> a = "abcdefgh"
    >>> map(''.join, zip(a[::2], a[1::2]))
    ['ab', 'cd', 'ef', 'gh']
    >>> map(''.join, zip(*([iter(a)]*2)))
    ['ab', 'cd', 'ef', 'gh']
    Ответ написан
    1 комментарий
  • Ошибка при работе с SymPy в PyScripter. Что делать?

    @brake
    Нет информации о том, какая версия Windows, интерпретатора, PyScripter (32 или 64 бита), в какой момент возникает ошибка (при импорте модуля?).

    Гугл показывает, что многие подобные проблемы в PyScripter связаны с несоответствием битности скриптера и библиотек python (поскольку заявлено, что sympy написан на чистом python, он должен работать в любом окружении).
    Ответ написан
    Комментировать
  • Как реализовать plugin-ы/расшерения?

    @brake
    Я делал так (безотносительно к фреймворку, просто скрипт с плагинами):
    1. Продумал структуру папок для плагинов, допустим, в самом простом случае, папка plugin
    2. Продумал API плагина, допустим, каждый плагин должен иметь метод run()

    В итоге в папке plugin (которая должна быть и пакетом и содержать модуль __init__.py) лежат все модули-плагины.
    Далее, в коде, делаем загрузчик плагинов, который использует функцию __import__() для загрузки пакета плагинов, анализа всех модулей пакета и импорта нужного модуля.

    def load_plugin_module(plugin):
        '''Загрузка модуля плагина по имени.
        plugin - имя модуля плагина.
        Возвращает:
            mod - модуль плагина
        '''
        try:
            # fromlist=[plugin] - здесь просто МАГИЯ,
            # без этого не импортируется то, что нужно
            vpkg = __import__(PLUGIN_DIR, fromlist=[plugin])
            return getattr(vpkg, plugin)
        except ImportError:
            raise RuntimeError('Plugin %s not found' % plugin)
    
        except ValueError:
            raise RuntimeError('Invalid plugin name %s' % plugin)


    Поскольку мы знаем API каждого плагина (он у нас единый), то после импорта нужного плагина мы знаем как к этому плагину обращаться.

    plug = load_plugin_module(known_plugin_name)
    plug.run()
    Ответ написан
    2 комментария

Лучшие вопросы пользователя

Все вопросы (1)