aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/utils/py_manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mlia/utils/py_manager.py')
-rw-r--r--src/mlia/utils/py_manager.py41
1 files changed, 30 insertions, 11 deletions
diff --git a/src/mlia/utils/py_manager.py b/src/mlia/utils/py_manager.py
index 5f98fcc..d7821d3 100644
--- a/src/mlia/utils/py_manager.py
+++ b/src/mlia/utils/py_manager.py
@@ -3,10 +3,16 @@
"""Util functions for managing python packages."""
from __future__ import annotations
+import logging
+import subprocess # nosec
import sys
from importlib.metadata import distribution
from importlib.metadata import PackageNotFoundError
-from subprocess import check_call # nosec
+
+from mlia.core.errors import InternalError
+
+
+logger = logging.getLogger(__name__)
class PyPackageManager:
@@ -45,16 +51,29 @@ class PyPackageManager:
"""Execute pip command."""
assert sys.executable, "Unable to launch pip command"
- check_call(
- [
- sys.executable,
- "-m",
- "pip",
- "--disable-pip-version-check",
- subcommand,
- *params,
- ]
- )
+ try:
+ output = subprocess.check_output( # nosec
+ [
+ sys.executable,
+ "-m",
+ "pip",
+ "--disable-pip-version-check",
+ subcommand,
+ *params,
+ ],
+ stderr=subprocess.STDOUT,
+ text=True,
+ )
+ returncode = 0
+ except subprocess.CalledProcessError as err:
+ output = err.output
+ returncode = err.returncode
+
+ for line in output.splitlines():
+ logger.debug(line.rstrip())
+
+ if returncode != 0:
+ raise InternalError("Unable to install python package")
def get_package_manager() -> PyPackageManager: