odoo-bin
Odoo-bin是启动odoo的第一步
它调用了odoo.cli.main()
odoo.cli.command
Command
main()方法
这里有三个if
分析可知,程序目前只进入到第三个判断
这里commands包含:shell;help;deploy;scaffold;server;start.这些都是来自CommandType类的cls参数
在Python中,普通的方法第一个参数一般都是self,它代表实例本身;另一个为cls,它代表类本身。在输出cls时,得到结果
这些类又由何而来?
在Command类中,odoo的开发者将该类的元类设置为CommandType类,而下面这些类又继承了Command类
因此cls参数的值就是这些类的类名。Commond作为父类不加载到commands数组中。
Main()方法将command默认为server,因此run()方法调用的是odoo.cli.server的run()方法:
Odoo.cli.main()通过tools.config._parse_config([args[0]])设计模块路径,通过o.run(args)运行server
这一步中,加载了配置文件,以及默认的指令
见后续文档