fix: use sys._MEIPASS for bundled data in onefile build

This commit is contained in:
Данил Ярош 2026-03-19 15:58:47 +03:00
parent ebc9d5835a
commit 348298d6f6
3 changed files with 6 additions and 7 deletions

View File

@ -32,11 +32,11 @@ class CommandSet:
def _get_commands_dir() -> Path:
"""Определить путь к папке commands/.
При запуске из .exe (PyInstaller) — рядом с exe-файлом.
При запуске из .exe (PyInstaller onefile) — в распакованном каталоге _MEIPASS.
При запуске из исходников — рядом с корнем проекта.
"""
if getattr(sys, "frozen", False):
base = Path(sys.executable).parent
base = Path(getattr(sys, "_MEIPASS", Path(sys.executable).parent))
else:
base = Path(__file__).resolve().parent.parent.parent
return base / "commands"

View File

@ -41,11 +41,11 @@ class InputMapping:
def _get_input_mappings_dir() -> Path:
"""Определить путь к папке input_mappings/.
При запуске из .exe (PyInstaller) — рядом с exe-файлом.
При запуске из .exe (PyInstaller onefile) — в распакованном каталоге _MEIPASS.
При запуске из исходников — рядом с корнем проекта.
"""
if getattr(sys, "frozen", False):
base = Path(sys.executable).parent
base = Path(getattr(sys, "_MEIPASS", Path(sys.executable).parent))
else:
base = Path(__file__).resolve().parent.parent.parent
return base / "input_mappings"

View File

@ -34,12 +34,11 @@ class LightMode:
def _get_light_modes_dir() -> Path:
"""Определить путь к папке light_modes/.
При запуске из .exe (PyInstaller) — рядом с exe-файлом.
При запуске из .exe (PyInstaller onefile) — в распакованном каталоге _MEIPASS.
При запуске из исходников — рядом с корнем проекта.
"""
if getattr(sys, "frozen", False):
# PyInstaller: sys.executable = путь к .exe
base = Path(sys.executable).parent
base = Path(getattr(sys, "_MEIPASS", Path(sys.executable).parent))
else:
# Разработка: корень проекта (где лежит main.py)
base = Path(__file__).resolve().parent.parent.parent