From 2de1c926bf287b2b6339ed92f28d5e25df4ac8c3 Mon Sep 17 00:00:00 2001 From: nfzd Date: Mon, 11 Mar 2024 22:36:10 +0100 Subject: [PATCH] Use correct Python version in Poetry init (#179) * Use correct Python version in Poetry init * Use interpreter override if configured * Don't use agent.python_binary if it is empty --------- Co-authored-by: Michael Mueller --- clearml_agent/commands/worker.py | 4 ++-- clearml_agent/helper/package/poetry_api.py | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/clearml_agent/commands/worker.py b/clearml_agent/commands/worker.py index 7c9f160..c6588e3 100644 --- a/clearml_agent/commands/worker.py +++ b/clearml_agent/commands/worker.py @@ -3569,8 +3569,8 @@ class Worker(ServiceCommandSection): executable_version, executable_version_suffix, executable_name = \ self.find_python_executable_for_version(def_python_version) - self._session.config.put("agent.default_python", executable_version_suffix) - self._session.config.put("agent.python_binary", executable_name) + self._session.config.put("agent.default_python", executable_version_suffix) + self._session.config.put("agent.python_binary", executable_name) venv_dir = Path(venv_dir) if venv_dir else \ Path(self._session.config["agent.venvs_dir"], executable_version_suffix) diff --git a/clearml_agent/helper/package/poetry_api.py b/clearml_agent/helper/package/poetry_api.py index 5a6de53..ea790d9 100644 --- a/clearml_agent/helper/package/poetry_api.py +++ b/clearml_agent/helper/package/poetry_api.py @@ -40,11 +40,11 @@ def prop_guard(prop, log_prop=None): class PoetryConfig: - def __init__(self, session, interpreter=None): + def __init__(self, session): # type: (Session, str) -> None self.session = session self._log = session.get_logger(__name__) - self._python = interpreter or sys.executable + self._python = sys.executable # default, overwritten from session config in initialize() self._initialized = False @property @@ -88,6 +88,11 @@ class PoetryConfig: @_guard_enabled def initialize(self, cwd=None): if not self._initialized: + # use correct python version -- detected in Worker.install_virtualenv() and written to + # session + if self.session.config.get("agent.python_binary", None): + self._python = self.session.config.get("agent.python_binary") + if self.session.config.get("agent.package_manager.poetry_version", None) is not None: version = str(self.session.config.get("agent.package_manager.poetry_version"))