Bläddra i källkod

crawl fix cli 2 exe

zhangfan 1 månad sedan
förälder
incheckning
bf07386372
1 ändrade filer med 24 tillägg och 1 borttagningar
  1. 24 1
      crossborder/cli.py

+ 24 - 1
crossborder/cli.py

@@ -1,6 +1,7 @@
 import argparse
 from importlib import import_module
 import sys
+import os
 
 from crossborder.utils.log import  get_logger
 
@@ -30,12 +31,28 @@ def run_province(name, year=None):
             fake_argv.extend(['--year', str(year)])
 
         sys.argv = fake_argv
-        module.main()
+        # 调用模块main函数
+        if hasattr(module, 'main'):
+            module.main()
+        else:
+            log.error(f"❌ {name} 模块缺少main()入口函数")
 
     except Exception as e:
         log.error(f"❌ {name} 执行失败: {e}")
 
 def main():
+    # 强制切换工作目录为exe所在目录
+    if getattr(sys, 'frozen', False):
+        # 打包后的exe路径
+        application_path = os.path.dirname(sys.executable)
+    else:
+        # 开发环境路径
+        application_path = os.path.dirname(os.path.abspath(__file__))
+    os.chdir(application_path)
+
+    if len(sys.argv) == 1:
+        sys.argv = ['run-crossborder.exe', '--all']
+
     parser = argparse.ArgumentParser(description="跨省数据采集器")
     group = parser.add_mutually_exclusive_group(required=True)
     group.add_argument('--province', '-p', choices=PROVINCE_MODULES.keys(), help='指定省份')
@@ -44,11 +61,17 @@ def main():
 
     args = parser.parse_args()
 
+    # 如果没有指定参数,默认执行all
+    if not (args.province or args.all):
+        args.all = True
+
     if args.province:
         run_province(args.province, args.year)
     elif args.all:
         for name in PROVINCE_MODULES:
             run_province(name, args.year)
 
+    log.info("数据采集全部执行完成!")
+
 if __name__ == "__main__":
     main()