"""路径工具:区分「数据根(只读)」与「运行根(可写)」。 开发模式:两者都是项目根(pod_trend_agent/)。 打包模式(PyInstaller -F): - 数据根 = sys._MEIPASS(解压的临时目录,只读;config.yaml / configs / prompts 在这里) - 运行根 = exe 所在目录(可写;output/ 产物与 .cache/ 缓存写到这,避免重启丢失) """ import sys from pathlib import Path def project_root() -> Path: """数据根:开发=graph 上级目录;打包=_MEIPASS(数据文件解压处)。""" if getattr(sys, "frozen", False): return Path(getattr(sys, "_MEIPASS", Path(sys.executable).parent)) return Path(__file__).resolve().parent.parent def runtime_root() -> Path: """运行根(可写):打包=exe 旁;开发=项目根。output/.cache 写这里。""" if getattr(sys, "frozen", False): return Path(sys.executable).resolve().parent return Path(__file__).resolve().parent.parent