静态分析Python模块以查找分配

| 我想让我的用户像下面这样写一个“ 0”模块:
\'\'\'
This is the simpack\'s docstring.

Bla bla bla.
\'\'\'

name = \'Name of the simpack\'

tags = [\'list\', \'of\', \'simpack-tags\']

__version__ = \'0.9.3\'
我希望我的程序能够获取所有这些内容:文档字符串,名称,标签和版本。但是我想不导入模块就这样做,因为
__init__.py
可能会导入整个包,这可能很重。 (我想对许多沉重的simpack进行此过程。) 我们可以假设用户没有做任何比简单的文字赋值更复杂的计算。 我听说
ast
模块做了这样的事情。但是,我也希望能够对已编译的文件执行此过程,例如
__init__.pyc
__init__.pyo
,而我不知道如何使用
ast
模块执行此操作。 ѭ3模块可以在源文件和编译文件中都这样做吗?怎么做?否则,是否有比
ast
更合适的工具?     
已邀请:
您所提议的内容有点困难且缺乏鲁棒性... ...3ѭ组件可能会在您的代码中引入版本依赖性。 替代方法:让用户写一个“ 11”而不是尝试分析“ 10”。然后您可以执行
import thepackage.userconfig
,而无需导入ѭ13do的全部内容     
一种替代方法是使用2个步骤的过程: 在创建源压缩包,鸡蛋等期间,以易于阅读的格式生成元数据(例如* .egg-info文件)。此步骤导入
__init__.py
文件。此步骤由诸如“ as”之类的用户操作触发 阅读此元数据。此步骤不导入任何内容。它只处理一个简单的文本文件     

要回复问题请先登录注册