Fix installing venv from the agent's python binary when the selected python failed - this could be the cause of missing pip or venv in the selected python

This commit is contained in:
clearml 2025-06-22 22:39:29 +03:00
parent afe69c822f
commit 3585786348

View File

@ -1,3 +1,4 @@
import sys
from typing import Any from typing import Any
from ...._vendor.pathlib2 import Path from ...._vendor.pathlib2 import Path
@ -72,11 +73,21 @@ class VirtualenvPip(SystemPip, PackageManager):
self.python, "-m", "virtualenv", self.path, *self.create_flags() self.python, "-m", "virtualenv", self.path, *self.create_flags()
).check_call() ).check_call()
except Exception as ex: except Exception as ex:
try:
# let's try with std library instead # let's try with std library instead
print("WARNING: virtualenv call failed: {}\n INFO: Creating virtual environment with venv".format(ex)) print("WARNING: virtualenv call failed: {}\n INFO: Creating virtual environment with venv".format(ex))
self.session.command( self.session.command(
self.python, "-m", "venv", self.path, *self.create_flags() self.python, "-m", "venv", self.path, *self.create_flags()
).check_call() ).check_call()
except Exception as ex:
# let's try with std library instead
print("WARNING: virtualenv and venv failed with [{}] trying virtualenv with python [{}]".format(
self.python, sys.executable))
self.python = str(sys.executable)
self._bin = Path(self.python)
self.session.command(
self.python, "-m", "virtualenv", self.path, *self.create_flags()
).check_call()
return self return self