2011-08-25 75 views
1

我正在使用python 2.6,我看到dir()函数有点奇怪的行为。我试图从单元测试的目录/包中导入所有模块,但是当我在文件夹上执行dir()时,我没有得到全部该目录中的模块。Python 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__ 

任何关于w的想法其他人不在这里出现?我不认为这很重要,但mod_dir中的__init__.py文件是空的。我试过设置__all__变量,但它没有效果。但是,如果它确实很重要,我将在Eclipse中使用pydev在Eclipse中使用它。

语境:

下mod_dir每个模块中有一个单元测试,我试图将它们纳入test.py.内的单元测试套件我知道鼻子和其他方法,如this之一,但我更感兴趣的是为什么dir没有显示所有的东西。

回答

3

我认为__init__.py文件为空是很重要的。

试试这个在__init__.py

import modA 
import modB 
import modC 

从python文档,dir should not be used for this(见本dir部分的底部注)。它不够严谨,主要用于交互式提示。

+0

我明白了。我想我会尝试一种不同的方法。实际上,我从单元测试中得到了这个想法。在其中一个函数loadTestFromModule中,它们做类似的事情,只有它们在模块本身上执行dir(),而不是软件包目录。 –