refactor(path_helper): 重构路径获取方法,支持打包运行

- 修改 get_data_dir 函数,以支持打包后可写的运行目录- 新增 get_app_dir 函数,提供更灵活的路径获取方式
- 优化路径处理逻辑,确保在不同环境下都能正确获取路径
This commit is contained in:
黄建武
2025-05-09 11:57:11 +08:00
parent 17216534cb
commit 668785ebe5

View File

@@ -6,7 +6,14 @@ PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../")
def get_data_dir():
data_path = os.path.join(PROJECT_ROOT, "data")
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
@@ -24,3 +31,20 @@ def get_model_dir(subdir: str = "whisper") -> str:
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