【问题标题】:Python dir() not displaying all modules in a packagePython dir() 不显示包中的所有模块
【发布时间】:2011-08-25 16:21:48
【问题描述】:

我使用的是 python 2.6,我看到 dir() 函数的行为有些奇怪。我正在尝试从目录/包中导入所有模块以进行单元测试,但是当我在文件夹上执行 dir() 时,我没有得到该目录中的 all 模块。

示例目录结构:

|-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 中的单元测试套件中。我知道鼻子和其他方法,如this 之一,但我更感兴趣的是为什么 dir 没有显示所有内容。

【问题讨论】:

    标签: python unit-testing module dir


    【解决方案1】:

    我认为__init__.py 文件为空确实很重要。

    __init__.py试试这个:

    import modA
    import modB
    import modC
    

    来自 python 文档,dir should not be used for this(请参阅dir 部分底部的注释)。不够严谨,主要用在交互提示中。

    【讨论】:

    • 我明白了。我想我会尝试不同的方法。实际上,我是从 unittest 中得到这个想法的。在其中一个函数 loadTestFromModule 中,它们执行类似的操作,只是它们对模块本身执行 dir(),而不是包目录。
    猜你喜欢
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多