Я хотел бы запустить doctest
s для набора модулей (glob: invenio.webtag*
) из одного модуля, но мне понадобится способ импортировать все эти (и только эти) модули и запустить doctest.testmod()
на всех из них. Есть идеи?Модули Python, соответствующие шаблону
Редактировать: Решение:
import doctest
import glob
import os
import pkgutil
pkgpath = pkgutil.extend_path([], 'invenio')[0]
for module_path in glob.glob(pkgpath + '/webtag*.py'):
module_name = os.path.splitext(os.path.basename(module_path))[0]
module = __import__('invenio.' + module_name)
doctest.testmod(module)
Прохладный, спасибо. Теперь мне просто нужно выяснить, почему этот кусок кода импортирует 'invenio' вместо' invenio.webtag': 'module = __import __ ('invenio.webtag')' – l0b0
@ l0b0: Из документов '__import__':« При импорте модуль из пакета, обратите внимание, что __import __ ('A.B', ...) возвращает пакет A, когда fromlist пуст, но его подмодуль B, когда fromlist не пуст. " –
Я обновил ответ, чтобы показать, как импортировать подмодуль. Pär добавил комментарий, говорящий то же самое, пока я делал редактирование. – mikej