检查包中的模块变量

时间:2012-01-18 17:32:04

标签: python python-module

我的python项目具有以下文件结构:

/main.py
/functions
/functions/func1.py
/functions/func2.py
/functions/func3.py
/funcitons/__init__.py

每个func.py文件都有一个变量'CAN_USE'。在某些文件中,其他错误也是如此。 我怎样才能检查我的main.py中哪些func.py文件的'CAN_USE'变量等于true?

2 个答案:

答案 0 :(得分:3)

使用pkgutil,您可以找到包中的所有模块:

import pkgutil

def usable_modules(package_name):
    modules = pkgutil.iter_modules([package_name])
    usable = []
    for importer, name, ispkg in modules:
        module = pkgutil.find_loader('{0}.{1}'.format(package_name, name)).\
                                                             load_module(name)
        if hasattr(module, 'CAN_USE') and module.CAN_USE:
            usable.append(module)
    return usable

print(usable_modules('functions'))

请注意,这还会检查程序包中的其他模块(例如__init__.py)。如果您愿意,可以在循环中过滤掉它们(例如if not name.startswith('func'): continue)。

答案 1 :(得分:0)

在main.py

中试试
from functions import func1, func2, func3
print func1.CAN_USE
print func2.CAN_USE
print func3.CAN_USE