forked from platypush/platypush
to_pkg_install_commands
should skip already installed sys packages.
This commit is contained in:
parent
449821673c
commit
f230fa79bb
1 changed files with 19 additions and 13 deletions
|
@ -353,22 +353,28 @@ class Dependencies:
|
||||||
|
|
||||||
wants_sudo = not (self._is_docker or os.getuid() == 0)
|
wants_sudo = not (self._is_docker or os.getuid() == 0)
|
||||||
pkg_manager = self.pkg_manager or PackageManagers.scan()
|
pkg_manager = self.pkg_manager or PackageManagers.scan()
|
||||||
|
|
||||||
if self.packages and pkg_manager:
|
if self.packages and pkg_manager:
|
||||||
yield ' '.join(
|
installed_packages = pkg_manager.value.get_installed()
|
||||||
[
|
to_install = sorted(
|
||||||
*(['sudo'] if wants_sudo else []),
|
pkg
|
||||||
*pkg_manager.value.install,
|
for pkg in self.packages # type: ignore
|
||||||
*sorted(
|
if pkg not in installed_packages
|
||||||
pkg
|
and not (
|
||||||
for pkg in self.packages # type: ignore
|
self.install_context == InstallContext.VENV
|
||||||
if not (
|
and self._is_python_pkg(pkg)
|
||||||
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]:
|
def to_pip_install_commands(self, full_command=True) -> Generator[str, None, None]:
|
||||||
"""
|
"""
|
||||||
Generates the pip commands required to install the given dependencies on
|
Generates the pip commands required to install the given dependencies on
|
||||||
|
|
Loading…
Reference in a new issue