我试图获取python包中的所有路径(例如numpy),你可以使用pydoc。理想情况下,此列表将包含以下元素:
numpy的 numpy.linalg numpy.linalg.det ...
因此,理想情况下,人们会递归到包内的子模块和类中,这些路径将成为选项卡完成在启用的编辑器中提供的内容。我希望从已安装的软件包中获取此列表以保持一致性。
此列表的目的是将其提供给模糊完成引擎以选择项目然后发送到pydoc,例如。通过键入" det&#34 ;,引擎会选择包含该字符串的所有条目(所以我不必记住它的完整路径),我可以从那里选择我想要的那个。一旦我有路径列表,那部分很容易!如果这很慢并不重要,我只需要执行一次并将其保存到文件以供以后使用。如果列表很长也没关系。完成引擎可以处理非常大的列表。
有直接的方法吗?我已经尝试了一些使用inspect模块的变体,通过 dict 属性递归,甚至是一个带有rlcompleter的属性,但到目前为止,我对递归没有太大的成功,或者路径在是pydoc。
答案 0 :(得分:0)
是的,有办法做到这一点。 例如,对于NumPy:
from pkgutil import walk_packages
import numpy
# Obtain list with all modules found in the package
mod_list = [name for _, name, _ in walk_packages(numpy.__path__,
numpy.__name__+'.')]
这将为您提供一个列表mod_list
,其中包含NumPy包中的所有子模块,以字符串形式给出。