
我建议将琐碎的“启动器”脚本放在项目的顶层,并将每个子项目文件夹放入包中。包中的模块可以相互导入,也可以将通用代码分解成
common包。
如果我们假设
merger可以将各种模块重构为共享版本,则结构如下所示:
projectroot |- script1.py # launcher scripts, see below for example pre |- script2.py |- script3.py | |- common | |- __init__.py | |- merger.py # from other packages, use from ..common import merger to get this | |- subproject1 | |- __init__.py # this can be empty | |- script1_main.py | |- subproject2 | |- __init__.py | |- script2_main.py | |- script2_matcher.py | |- subproject3 |- __init__.py |- script3_main.py |- script3_converter.py |- script3_matcher.py
启动器脚本可以非常简单:
from subproject1 import script1_mainif __name__ == "__main__": script1_main.main()
也就是说,它所做的只是导入适当的“
scriptN_main”模块并在其中运行一个函数。使用简单脚本可能还对脚本启动速度有一些好处,因为该
main模块可以将其编译后的字节码缓存到
.pyc文件中,而从不缓存脚本。
注意:我重命名了您的模块,将
_字符交换为
.字符。您不能
.在标识符(例如模块名称)中使用in,因为Python希望它指示属性访问。这意味着这些模块永远无法导入。(我猜测这只是示例文件的构件,而不是您的真实代码中的构件。)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)