2011-08-25 26 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(),而不是軟件包目錄。 –