擅长:python、mysql、java
<p>使用<code>pkgutil</code>可以找到包中的所有模块:</p>
<pre><code>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'))
</code></pre>
<p>注意,这还检查包中的其他模块(例如<code>__init__.py</code>)。如果愿意,可以在循环中过滤掉它们(例如<code>if not name.startswith('func'): continue</code>)。你知道吗</p>