From 2e6c66e52414672948864191a8462ef1a6511898 Mon Sep 17 00:00:00 2001 From: dw-0 Date: Thu, 3 Oct 2024 10:22:32 +0200 Subject: [PATCH] fix: allow moonraker-telegram-bot-env access to systems site-packages dir (#556) Signed-off-by: Dominik Willner --- .../assets/moonraker-telegram-bot.service | 2 +- .../moonraker_telegram_bot_extension.py | 3 ++- kiauh/utils/sys_utils.py | 14 +++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/kiauh/extensions/telegram_bot/assets/moonraker-telegram-bot.service b/kiauh/extensions/telegram_bot/assets/moonraker-telegram-bot.service index 567481d..ded7475 100644 --- a/kiauh/extensions/telegram_bot/assets/moonraker-telegram-bot.service +++ b/kiauh/extensions/telegram_bot/assets/moonraker-telegram-bot.service @@ -1,5 +1,5 @@ [Unit] -Description=Moonraker Telegram Bot SV1 %INST% +Description=Moonraker Telegram Bot SV1 Documentation=https://github.com/nlef/moonraker-telegram-bot/wiki After=network-online.target diff --git a/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py b/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py index a989e25..e6b6f13 100644 --- a/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py +++ b/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py @@ -161,10 +161,11 @@ class TelegramBotExtension(BaseExtension): # install dependencies script = TG_BOT_DIR.joinpath("scripts/install.sh") package_list = parse_packages_from_file(script) + check_install_dependencies({*package_list}) # create virtualenv - if create_python_venv(TG_BOT_ENV): + if create_python_venv(TG_BOT_ENV, allow_access_to_system_site_packages=True): install_python_requirements(TG_BOT_ENV, TG_BOT_REQ_FILE) def _patch_bot_update_manager(self, instances: List[Moonraker]) -> None: diff --git a/kiauh/utils/sys_utils.py b/kiauh/utils/sys_utils.py index 02b5096..d93a527 100644 --- a/kiauh/utils/sys_utils.py +++ b/kiauh/utils/sys_utils.py @@ -91,19 +91,27 @@ def parse_packages_from_file(source_file: Path) -> List[str]: return packages -def create_python_venv(target: Path, force: bool = False) -> bool: +def create_python_venv( + target: Path, + force: bool = False, + allow_access_to_system_site_packages: bool = False, +) -> bool: """ Create a python 3 virtualenv at the provided target destination. Returns True if the virtualenv was created successfully. Returns False if the virtualenv already exists, recreation was declined or creation failed. - :param force: Force recreation of the virtualenv :param target: Path where to create the virtualenv at + :param force: Force recreation of the virtualenv + :param allow_access_to_system_site_packages: give the virtual environment access to the system site-packages dir :return: bool """ Logger.print_status("Set up Python virtual environment ...") + cmd = ["virtualenv", "-p", "/usr/bin/python3", target.as_posix()] + cmd.append( + "--system-site-packages" + ) if allow_access_to_system_site_packages else None if not target.exists(): try: - cmd = ["virtualenv", "-p", "/usr/bin/python3", target.as_posix()] run(cmd, check=True) Logger.print_ok("Setup of virtualenv successful!") return True