我在标准包结构中编写了一堆.py
个文件,每个子目录中都有脚本和__init__.py
。其中许多.py
模块使用“绝对导入”相互导入,例如
from mypkg.utils.functions import transform
每个人都有一个run
功能,并且
if __name__ == '__main__':
run()
我想运行一个命令行命令,它将是一系列这些模块。我目前正在使用形式为
的shell脚本cd /parent_of_mypkg/
python -m mypkg.build.run_first
python -m mypkg.build.run_second
python -m mypkg.build.run_third
python -m mypkg.build.run_fourth
目前,如果run_second
出现错误,它会跳到run_third
,但我希望它停止并提醒我异常。
this answer中提到的一种方法是
import mypkg.build.run_first as run_first
import mypkg.build.run_second as run_second
import mypkg.build.run_third as run_third
import mypkg.build.run_fourth as run_fourth
run_first.main()
run_second.main()
run_third.main()
run_fourth.main()
但这看起来有点麻烦和重复。在Python中有一个很好的方法吗?
答案 0 :(得分:0)
在阅读您关联的帖子后,您的回答就在那里。 我引用:
最简单的方法是为每个模块编写一个main函数并连续运行所有主要函数。
如果经验丰富的Python开发人员告诉您,最简单的方法就是您当前正在这样做的方式(使用您已经展示的示例),那么他可以说#&# 39;对了,那就怎么做。
坚持你正在做的事情。它既麻烦又重复,但也很简单,实际上也有效。如果您不相信,我确定PyPI
上的某个模块可以帮助您,尽管复杂性可能是不必要的。