Python dir () не отображает все модули в пакете

1

Я использую python 2.6, и я вижу несколько странное поведение с функцией dir(). Я пытаюсь импортировать все модули из каталога/пакета для unittest, но когда я делаю dir() в папке, я не получаю все модули в этом каталоге.

Пример структуры каталога:

|-mod_dir\
|---__init__.py
|---modA.py
|---modB.py
|---modC.py
|
|-mod_tests\
|---__init__.py
|---test.py

Пример test.py:

import mod_dir

for obj in dir(mod_dir):
   print obj

К сожалению, на данный момент я получаю только что-то вроде:

modA
__all__
__builtins__
__doc__
__file__
__name__
__package__
__path__

Любые идеи относительно того, почему другие не появляются здесь? Я не думаю, что это имеет значение, но файл __init__.py в mod_dir пуст. Я попытался установить переменную __all__ но она не имеет никакого эффекта. Однако, если это имеет значение, я использую это в WinXp с pydev в eclipse.

Контекст:

Каждый модуль в mod_dir имеет unittest в нем, и я пытаюсь включить их в набор unittest в test.py. Я знаю нос и другие методы, подобные этому, но меня больше интересует, почему dir не отображает все.

Теги:
unit-testing
module
dir

1 ответ

3
Лучший ответ

Я считаю, что имеет значение, что файл __init__.py пуст.

Попробуйте это в __init__.py:

import modA
import modB
import modC

Из документов python не следует использовать dir (см. Примечание внизу раздела dir). Это не достаточно строго, и в основном используется в интерактивной подсказке.

  • 0
    Понимаю. Я думаю, что я попробую другой подход тогда. На самом деле, я получил идею от unittest. Внутри одной из функций loadTestFromModule они выполняют нечто подобное, только они выполняют функцию dir () для самого модуля, а не для каталога пакета.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню