main.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. """
  2. 入口程序
  3. 包都按需导入, 不需要使用的模块则不会导入
  4. 因此安装过程可以选用不完整安装
  5. 但依赖模块都都是固定的
  6. """
  7. import sys
  8. import os
  9. from conf import Config
  10. def can_not_load(name):
  11. print(f"无法加载 {name} 系统, 该系统或其依赖可能不存在", file=sys.stderr)
  12. def main():
  13. if Config.mysql_url is None or Config.mysql_name is None:
  14. print("请提供MySQL信息")
  15. sys.exit(1)
  16. program_name = Config.program
  17. if program_name == "setup": # setup程序不需要数据库链接等操作
  18. __main = os.path.dirname(os.path.abspath(__file__))
  19. res = os.system(f"{sys.executable} {os.path.join(__main, 'setup.py')} "
  20. f"--mysql_url={Config.mysql_url} "
  21. f"--mysql_name={Config.mysql_name} "
  22. f"--mysql_passwd={Config.mysql_passwd} "
  23. f"--program=setup")
  24. if res != 0:
  25. print("初始化程序加载失败, 请检查配置是否正确而", file=sys.stderr)
  26. sys.exit(1)
  27. sys.exit(0)
  28. from sql.db import DB
  29. mysql = DB()
  30. if program_name == "garbage":
  31. from equipment.aliyun import Aliyun
  32. if Config.aliyun_key is None or Config.aliyun_secret is None:
  33. print("请提供Aliyun key信息")
  34. sys.exit(1)
  35. try:
  36. from equipment.scan import HGSCapture, HGSQRCoder
  37. import tk_ui.station as garbage_station
  38. except ImportError:
  39. can_not_load("垃圾站系统")
  40. sys.exit(1)
  41. aliyun = Aliyun()
  42. cap = HGSCapture()
  43. qr = HGSQRCoder(cap)
  44. station = garbage_station.GarbageStation(mysql, cap, qr, aliyun)
  45. station.mainloop()
  46. elif program_name == "ranking":
  47. try:
  48. import tk_ui.ranking as ranking_station
  49. except ImportError:
  50. can_not_load("排行榜系统")
  51. sys.exit(1)
  52. station = ranking_station.RankingStation(mysql)
  53. station.mainloop()
  54. elif program_name == "manager":
  55. try:
  56. import tk_ui.admin as admin_station
  57. except ImportError:
  58. can_not_load("管理员系统")
  59. sys.exit(1)
  60. station = admin_station.AdminStation(mysql)
  61. station.mainloop()
  62. elif program_name == "ranking_website":
  63. try:
  64. from app import creat_web
  65. from app.views import register
  66. except ImportError:
  67. can_not_load("在线排行榜服务")
  68. sys.exit(1)
  69. app = creat_web(mysql)
  70. app.run()
  71. else:
  72. can_not_load(program_name)
  73. sys.exit(1)
  74. if __name__ == '__main__':
  75. main()