ソースを参照

windows打包路径兼容

01495251 1 ヶ月 前
コミット
6c8fca3196

+ 3 - 1
crossborder/export/export_sql.py

@@ -10,9 +10,9 @@ from crossborder.utils.log import get_logger
 
 log = get_logger(__name__)
 
-# 定义导出目录
 EXPORT_DIR = DOWNLOAD_DIR / "export"
 os.makedirs(EXPORT_DIR, exist_ok=True)
+log.info(f"开始导出数据,导出目录: {EXPORT_DIR}")
 
 
 def escape_value(value):
@@ -141,6 +141,8 @@ def export_tables():
 
     skip_fields = {'id'}
 
+    log.info(f"开始导出最新月份数据...,导出目录:{EXPORT_DIR}")
+
     # 导出按年份月份的表(最新月数据)
     for table in month_tables:
         try:

+ 7 - 1
crossborder/utils/constants.py

@@ -9,7 +9,13 @@ if sys.platform.startswith('linux'):
     DOWNLOAD_DIR = Path('/home/testadmin/downloads')
 else:
     # Windows保持原有结构(项目根目录下的downloads文件夹)
-    DOWNLOAD_DIR = PROJECT_ROOT / 'downloads'
+    #判断当前 Python 程序是否是通过 PyInstaller 等工具打包成的可执行文件
+    if getattr(sys, 'frozen', False):
+        # 打包环境:使用可执行文件所在目录
+        DOWNLOAD_DIR = Path(os.path.dirname(sys.executable))
+    else:
+        DOWNLOAD_DIR = PROJECT_ROOT / 'downloads'
+
 # DOWNLOAD_DIR = Path(os.getcwd(), '/downloads')
 DOWNLOAD_DIR.mkdir(exist_ok=True, parents=True)
 

+ 5 - 1
crossborder/utils/log.py

@@ -25,7 +25,11 @@ def configure_logging():
     if sys.platform.startswith('linux'):
         log_dir = Path('/home/testadmin/logs')
     else:
-        log_dir = project_root / 'logs'
+        if getattr(sys, 'frozen', False):
+            # 打包环境:使用可执行文件所在目录
+            log_dir = Path(os.path.dirname(sys.executable))
+        else:
+            log_dir = project_root / 'logs'
 
     os.makedirs(log_dir, exist_ok=True)