Как найти все дочерние модули в Python?

Загрузите последний ZIP-архив Tomcat с https://tomcat.apache.org/download-90.cgi Переименуйте папку с простым именем, например, «tomcat». Сохраните папку и скопируйте путь.

Перейти к справке -> Установить новое программное обеспечение Выберите {Oxygen - http://download.eclipse.org/releases/oxygen } на вкладке «Работа с». Выберите последний вариант Web, XML, Java EE и OSGi Enterprise Development. Установите флажки, соответствующие 1.Eclipse Java EE Developer Tools 2.JST-серверные адаптеры 3.JST-серверные адаптеры Расширения Нажмите Далее и примите лицензионное соглашение.

13
задан CharlesB 25 February 2013 в 15:19
поделиться

3 ответа

с использованием dir () и модуля imp

0
ответ дан 2 December 2019 в 02:11
поделиться

Когда я был добрым и только начинал программировать на Python Я написал это для своего модульного IRC-бота:


    # Load plugins

    _plugins = []

    def ifName(name):
        try:
            return re.match('([^_.].+)\.[^.]+', a).group(1)
        except:
            return None

    def isValidPlugin(obj):
        from common.base import PluginBase
        try:
            if obj.__base__ == PluginBase:
                return True
            else:
                return False
        except:
            return False

    plugin_names = set(ifilter(lambda a: a!=None, [ifName(a) for a in os.listdir(os.path.join(os.getcwd(), 'plugins'))]))
    for plugin_name in plugin_names:
        try:
            plugin = __import__('plugins.'+plugin_name, fromlist=['plugins'])
            valid_plugins = filter(lambda a: isValidPlugin(a), [plugin.__getattribute__(a) for a in dir(plugin)])
            _plugins.extend(valid_plugins)
        except Exception, e:
            logger.exception('Error loading plugin %s', plugin_name)

    # Run plugins

    _plugins = [klass() for klass in _plugins]

Это небезопасный или «правильный» способ, но, возможно, он все же будет полезен. Это очень старый код, поэтому, пожалуйста, не бейте меня.

1
ответ дан 2 December 2019 в 02:11
поделиться

Вы можете попробовать glob bing каталог:

import os
import glob

modules = glob.glob(os.path.join('/some/path/to/modules', '*.py'))

Затем вы можете попробовать импортировать их:

checked_modules
for module in modules:
    try:
        __import__(module, globals(), locals()) # returns module object
    except ImportError:
        pass
    else:
        checked_modules.append(module)
-1
ответ дан 2 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: