Python dir () не отображает все модули в пакете - PullRequest
1 голос
/ 25 августа 2011

Я использую Python 2.6 и вижу странное поведение с функцией dir().Я пытаюсь импортировать все модули из каталога / пакета для юнит-теста, но когда я включаю 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.

Context:

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

1 Ответ

3 голосов
/ 25 августа 2011

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

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

import modA
import modB
import modC

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

...