`to_pkg_install_commands` should skip already installed sys packages.

This commit is contained in:
Fabio Manganiello 2023-08-23 11:51:53 +02:00
parent 449821673c
commit f230fa79bb
Signed by: blacklight
GPG Key ID: D90FBA7F76362774
1 changed files with 19 additions and 13 deletions

View File

@ -353,22 +353,28 @@ class Dependencies:
wants_sudo = not (self._is_docker or os.getuid() == 0)
pkg_manager = self.pkg_manager or PackageManagers.scan()
if self.packages and pkg_manager:
yield ' '.join(
[
*(['sudo'] if wants_sudo else []),
*pkg_manager.value.install,
*sorted(
pkg
for pkg in self.packages # type: ignore
if not (
self.install_context == InstallContext.VENV
and self._is_python_pkg(pkg)
)
),
]
installed_packages = pkg_manager.value.get_installed()
to_install = sorted(
pkg
for pkg in self.packages # type: ignore
if pkg not in installed_packages
and not (
self.install_context == InstallContext.VENV
and self._is_python_pkg(pkg)
)
)
if to_install:
yield ' '.join(
[
*(['sudo'] if wants_sudo else []),
*pkg_manager.value.install,
*to_install,
]
)
def to_pip_install_commands(self, full_command=True) -> Generator[str, None, None]:
"""
Generates the pip commands required to install the given dependencies on