From 60a58f6fadf755cb91b39a30c6462cc8788f3c9f Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Wed, 14 Apr 2021 11:22:07 +0300 Subject: [PATCH] Fix poetry support (issue #57) --- clearml_agent/commands/worker.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/clearml_agent/commands/worker.py b/clearml_agent/commands/worker.py index a866e0b..a5c4806 100644 --- a/clearml_agent/commands/worker.py +++ b/clearml_agent/commands/worker.py @@ -2242,16 +2242,19 @@ class Worker(ServiceCommandSection): except Exception: requirements = freeze - # add to cache - print('Adding venv into cache: {}'.format(add_venv_folder_cache)) - if add_venv_folder_cache: - self.package_api.add_cached_venv( - requirements=[freeze, previous_reqs], - docker_cmd=execution_info.docker_cmd if execution_info else None, - python_version=getattr(self.package_api, 'python', ''), - cuda_version=self._session.config.get("agent.cuda_version"), - source_folder=add_venv_folder_cache, - exclude_sub_folders=['task_repository', 'code']) + # disable caching with poetry because we cannot make it install into a specific folder + # Todo: add support for poetry caching + if not self.poetry.enabled: + # add to cache + print('Adding venv into cache: {}'.format(add_venv_folder_cache)) + if add_venv_folder_cache: + self.package_api.add_cached_venv( + requirements=[freeze, previous_reqs], + docker_cmd=execution_info.docker_cmd if execution_info else None, + python_version=getattr(self.package_api, 'python', ''), + cuda_version=self._session.config.get("agent.cuda_version"), + source_folder=add_venv_folder_cache, + exclude_sub_folders=['task_repository', 'code']) # If do not update back requirements if not update_requirements: @@ -2310,7 +2313,11 @@ class Worker(ServiceCommandSection): package_api.cwd = cwd api = self._install_poetry_requirements(repo_info) if api: - package_api = api + # update back the package manager, this hack should be fixed + if package_api == self.package_api: + self.package_api = api + elif package_api == self.global_package_api: + self.global_package_api = api return package_api.upgrade_pip()