Files
BiliNote/backend/app/utils/path_helper.py
黄建武 668785ebe5 refactor(path_helper): 重构路径获取方法,支持打包运行
- 修改 get_data_dir 函数,以支持打包后可写的运行目录- 新增 get_app_dir 函数,提供更灵活的路径获取方式
- 优化路径处理逻辑,确保在不同环境下都能正确获取路径
2025-05-09 11:57:11 +08:00

50 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
import sys
from pathlib import Path
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))
def get_data_dir():
if getattr(sys, 'frozen', False):
# ✅ 打包后使用可写的运行目录
base_dir = os.path.dirname(sys.executable)
else:
# ✅ 开发时使用项目根目录下的 data 目录
base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../data"))
data_path = os.path.join(base_dir, "data")
os.makedirs(data_path, exist_ok=True)
return data_path
def get_model_dir(subdir: str = "whisper") -> str:
# 判断是否为打包状态PyInstaller
if getattr(sys, 'frozen', False):
# exe 执行,放在 APPDATA 或 ~/.cache 下
base_dir = os.path.join(os.getenv("APPDATA") or str(Path.home()), "BiliNote", "models")
else:
# 开发时,相对项目根目录
base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../models"))
path = os.path.join(base_dir, subdir)
os.makedirs(path, exist_ok=True)
return path
def get_app_dir(subdir: str = "") -> str:
"""
返回一个稳定的可写目录:
- 开发时:使用项目 data 目录
- 打包后:使用 exe 所在目录
"""
if getattr(sys, 'frozen', False):
# 打包后运行:使用 main.exe 所在目录
base_dir = os.path.dirname(sys.executable)
else:
# 开发模式:使用项目的 /data 目录
base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../data"))
full_path = os.path.join(base_dir, subdir)
os.makedirs(full_path, exist_ok=True)
return full_path