我正在用Python编写一个编译器,使用PLY(Python Lex-Yacc)库来“编译”编译器。编译器必须经历许多规则(
只有核心规则的数量最终将少于一百,并且它们可以扩展)。因此,为了保持不同类型的规则分离,我在一个modules
目录中创建了许多Python模块。
要包含所有规则,我不必将模块包含在此目录中,但我必须将规则(实现为Python函数)包含在当前命名空间中。一旦它们存在于那里,编译器的输入将被正确地标记化,解析等等。
以下是我读到并尝试过的内容:
__import__
,getattr
和sys.modules
(非常原始,一般不首选)importlib
库(如何在模块中获取所有内容?)__init__.py
,只是尝试from modules import *
,这将导入模块中的所有内容但这些似乎对我来说都不是完全令人满意的。我无法准确地做我想做的事。所以我的问题是:如何将子模块中Python模块的某些属性导入到顶级模块的运行命名空间中?
感谢您的关注!