diff --git a/trains_agent/commands/worker.py b/trains_agent/commands/worker.py index 4710f12..87e3c28 100644 --- a/trains_agent/commands/worker.py +++ b/trains_agent/commands/worker.py @@ -932,6 +932,7 @@ class Worker(ServiceCommandSection): repo_info, requirements_manager=requirements_manager, cached_requirements=requirements, + cwd=vcs.location if vcs and vcs.location else directory, ) freeze = self.freeze_task_environment() script_dir = directory @@ -1102,6 +1103,7 @@ class Worker(ServiceCommandSection): repo_info, requirements_manager=requirements_manager, cached_requirements=requirements, + cwd=vcs.location if vcs and vcs.location else directory, ) # do not update the task packages if we are using conda, @@ -1409,7 +1411,7 @@ class Worker(ServiceCommandSection): return None def install_requirements( - self, execution, repo_info, requirements_manager, cached_requirements=None + self, execution, repo_info, requirements_manager, cached_requirements=None, cwd=None, ): # type: (ExecutionInfo, RepoInfo, RequirementsManager, Optional[dict]) -> None """ @@ -1422,6 +1424,8 @@ class Worker(ServiceCommandSection): :param requirements_manager: requirements manager for task :param cached_requirements: cached requirements from previous run """ + if self.package_api: + self.package_api.cwd = cwd api = self._install_poetry_requirements(repo_info) if api: self.package_api = api diff --git a/trains_agent/helper/package/base.py b/trains_agent/helper/package/base.py index aad5c90..0f2f652 100644 --- a/trains_agent/helper/package/base.py +++ b/trains_agent/helper/package/base.py @@ -16,6 +16,7 @@ class PackageManager(object): """ _selected_manager = None + _cwd = None @abc.abstractproperty def bin(self): @@ -97,6 +98,14 @@ class PackageManager(object): # this is helpful when we want out of context requirement installations PackageManager._selected_manager = self + @property + def cwd(self): + return self._cwd + + @cwd.setter + def cwd(self, value): + self._cwd = value + @classmethod def out_of_scope_install_package(cls, package_name): if PackageManager._selected_manager is not None: diff --git a/trains_agent/helper/package/pip_api/system.py b/trains_agent/helper/package/pip_api/system.py index 455d845..2cc036e 100644 --- a/trains_agent/helper/package/pip_api/system.py +++ b/trains_agent/helper/package/pip_api/system.py @@ -29,7 +29,7 @@ class SystemPip(PackageManager): pass def install_from_file(self, path): - self.run_with_env(('install', '-r', path) + self.install_flags()) + self.run_with_env(('install', '-r', path) + self.install_flags(), cwd=self.cwd) def install_packages(self, *packages): self._install(*(packages + self.install_flags()))