sie*_*z0r 8 python namespaces module package inspect
我正在尝试让Python列出命名空间包中的所有模块.
我有以下文件结构:
cwd
|--a
| `--ns
| |--__init__.py
| `--amod.py
|--b
| `--ns
| |--__init__.py
| `--bmod.py
`--c
`--ns
|--__init__.py
`--cmod.py
Run Code Online (Sandbox Code Playgroud)
每个都__init__.py通过以下行将它的包定义为命名空间包:
__import__('pkg_resources').declare_namespace(__name__)
Run Code Online (Sandbox Code Playgroud)
该amod模块包含一个类A,bmod包含另一个类B并cmod包含C该类.
拥有干净的环境时会发生以下情况:
>>> import inspect, sys, glob
>>> sys.path += glob.glob('*')
>>> import ns
>>> inspect.getmembers(ns, inspect.ismodule)
[]
Run Code Online (Sandbox Code Playgroud)
如您所见,未列出模块.
现在,当我手动导入模块然后再次调用inspect时:
>>> inspect.getmembers(ns, inspect.ismodule)
[('amod', <module 'ns.amod' from 'a/ns/amod.pyc'>), ('bmod', <module 'ns.bmod' from 'b/ns/bmod.pyc'>), ('cmod', <module 'ns.cmod' from 'c/ns/cmod.pyc'>)]
Run Code Online (Sandbox Code Playgroud)
现在我想要在inspect不手动导入模块的情况下调用工作,那么我该如何实现呢?
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |