如何解决静态分析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”之类的用户操作触发
阅读此元数据。此步骤不导入任何内容。它只处理一个简单的文本文件
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。