Fix relative requirements "-e" support by installing from the code's cwd

This commit is contained in:
allegroai 2020-01-14 13:05:12 +02:00
parent b1ca90a303
commit 224868c9a4
3 changed files with 15 additions and 2 deletions

View File

@ -932,6 +932,7 @@ class Worker(ServiceCommandSection):
repo_info, repo_info,
requirements_manager=requirements_manager, requirements_manager=requirements_manager,
cached_requirements=requirements, cached_requirements=requirements,
cwd=vcs.location if vcs and vcs.location else directory,
) )
freeze = self.freeze_task_environment() freeze = self.freeze_task_environment()
script_dir = directory script_dir = directory
@ -1102,6 +1103,7 @@ class Worker(ServiceCommandSection):
repo_info, repo_info,
requirements_manager=requirements_manager, requirements_manager=requirements_manager,
cached_requirements=requirements, cached_requirements=requirements,
cwd=vcs.location if vcs and vcs.location else directory,
) )
# do not update the task packages if we are using conda, # do not update the task packages if we are using conda,
@ -1409,7 +1411,7 @@ class Worker(ServiceCommandSection):
return None return None
def install_requirements( 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 # type: (ExecutionInfo, RepoInfo, RequirementsManager, Optional[dict]) -> None
""" """
@ -1422,6 +1424,8 @@ class Worker(ServiceCommandSection):
:param requirements_manager: requirements manager for task :param requirements_manager: requirements manager for task
:param cached_requirements: cached requirements from previous run :param cached_requirements: cached requirements from previous run
""" """
if self.package_api:
self.package_api.cwd = cwd
api = self._install_poetry_requirements(repo_info) api = self._install_poetry_requirements(repo_info)
if api: if api:
self.package_api = api self.package_api = api

View File

@ -16,6 +16,7 @@ class PackageManager(object):
""" """
_selected_manager = None _selected_manager = None
_cwd = None
@abc.abstractproperty @abc.abstractproperty
def bin(self): def bin(self):
@ -97,6 +98,14 @@ class PackageManager(object):
# this is helpful when we want out of context requirement installations # this is helpful when we want out of context requirement installations
PackageManager._selected_manager = self PackageManager._selected_manager = self
@property
def cwd(self):
return self._cwd
@cwd.setter
def cwd(self, value):
self._cwd = value
@classmethod @classmethod
def out_of_scope_install_package(cls, package_name): def out_of_scope_install_package(cls, package_name):
if PackageManager._selected_manager is not None: if PackageManager._selected_manager is not None:

View File

@ -29,7 +29,7 @@ class SystemPip(PackageManager):
pass pass
def install_from_file(self, path): 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): def install_packages(self, *packages):
self._install(*(packages + self.install_flags())) self._install(*(packages + self.install_flags()))