是否有直接的方式列出包中所有模块的名称,而不使用__all__
?有没有一种标准的方式来列出包中的Python模块名称?
例如,假设这个包:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
我不知道是否有做这样的一个标准或内置方式:
>>> package_contents("testpkg")
['modulea', 'moduleb']
手动的方法是遍历模块搜索路径以查找程序包的目录。然后可以列出该目录中的所有文件,过滤出唯一命名的py/pyc/pyo文件,剥离扩展名并返回该列表。但是对于模块导入机制已经在内部进行的操作来说,这似乎是相当多的工作。该功能暴露在任何地方?
列出内容o f已经导入的模块。我正在寻找一种方法来列出尚未导入的包的内容,就像'from x import *'在未指定__all__时所做的一样。 – DNS 2009-01-28 15:16:52
from x import *首先导入模块,然后将所有内容复制到当前模块。 – Seb 2009-01-28 15:29:17
由于Windows上的区分大小写问题,我意识到'从x导入*'实际上并不导入包的子模块。我只是把它作为我想要做的一个例子,为了避免混淆,我编辑了它。 – DNS 2009-01-28 15:56:35