Python dir()未显示包中的所有模块
我在使用 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__
有没有人知道为什么其他模块没有出现在这里?我觉得这可能不重要,但 mod_dir 里的 __init__.py
文件是空的。我尝试过设置 __all__
这个变量,但没有任何效果。不过,如果这真的重要的话,我是在 WinXp 上用 Eclipse 的 pydev 来做的。
背景:
mod_dir 下的每个模块都有一个单元测试,我想把它们包含在 test.py 的单元测试套件中。我知道有 nose 这样的工具和其他方法,比如 这个,但我更想知道为什么 dir 没有显示所有内容。
1 个回答
4
我觉得 __init__.py
文件是空的这一点很重要。
你可以在 __init__.py
里试试这个:
import modA
import modB
import modC
根据 Python 的文档,dir
这个函数不应该用来做这个(可以看看 dir
部分底部的说明)。它的严格性不够,主要是在交互式提示中使用。