【发布时间】:2018-08-16 20:06:46
【问题描述】:
如果 Jython 模块以已编译的 .py$class 文件形式存在于 Java .jar 中,有没有办法在运行时发现包中的 Jython 模块?
假设我有一个模块foo 包含函数frobify。我团队中的其他人正在提供一个包bar,其中包含模块:
bar/
__init__.py
tweedledee.py
tweedledum.py
walrus.py
carpenter.py
他们使用 Jython 将其中的每一个编译成 .py$class 文件,然后将包含所有 .py$class 文件的 bar 目录转换成 bar.jar
然后我们运行 Jython 并执行以下命令:
import foo
import bar
foo.frobify(bar)
我想在哪里写 frobify() 来做到这一点:
def frobify(package):
for module in get_modules(package):
do_something_with(module)
我如何实现get_modules() 以便它返回提供的包内的模块列表?我宁愿采用这种方法,也不愿强迫我的客户明确地传递模块列表。
【问题讨论】:
-
hmm...我刚刚以交互方式运行了一个 Jython 提示,看起来
dir(package)包含它下面的模块,即使您只是导入包本身。 -
哦,废话,只有当包在 init.py 中显式导入其子模块时才有效