我想让我的用户编写一个__init__.py
模块,如下所示:
'''
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
可能导入整个包可能很重。 (我想为许多沉重的小事做这个过程。)
我们可以假设用户不会做任何计算上比简单的文字分配更复杂的事情。
我听说ast
模块做了这样的事情。但是,我还希望能够对编译的文件执行此过程,例如__init__.pyc
或__init__.pyo
,我不知道如何使用ast
模块执行此操作。
ast
模块可以在源文件和编译文件上执行此操作吗?怎么做?否则,是否有比ast
更适合的工具?
答案 0 :(得分:2)
您提出的难点和缺乏健壮性...... ast
组件可能会在您的代码中引入版本依赖项。
替代方案:让用户编写thepackage/__init__.py[co]?
,而不是尝试分析thepackage/userconfig.py
。然后,您可以执行import thepackage.userconfig
而无需导入thepackage
答案 1 :(得分:0)
另一种方法是使用两个步骤:
__init__.py
文件。此步骤由用户操作触发,例如setup.py sdist