HKUDS/nanobot · error · CliAppError
pip is not available and uv is not installed
Error message
pip is not available and uv is not installed
What it means
Error "pip is not available and uv is not installed" thrown in HKUDS/nanobot.
Source
Thrown at nanobot/apps/cli/service.py:870
def _pip_available() -> bool:
"""Return True if pip is importable for the current interpreter."""
from importlib.util import find_spec
return find_spec("pip") is not None
def _pip_install_argv(self, app: dict[str, Any], *, update: bool = False) -> list[str]:
install_cmd = str(app.get("install_cmd") or "")
if not _is_pip_install_command(install_cmd) or _has_shell_meta(install_cmd):
raise CliAppError("unsupported pip install command")
tokens = shlex.split(install_cmd)
args = tokens[2:] if tokens[:2] == ["pip", "install"] else tokens[4:]
pip_available = self._pip_available()
if pip_available:
prefix = [sys.executable, "-m", "pip", "install"]
elif shutil.which("uv"):
prefix = ["uv", "pip", "install", "--python", sys.executable]
else:
raise CliAppError("pip is not available and uv is not installed")
if update:
if pip_available:
prefix.extend(["--upgrade", "--force-reinstall"])
else:
prefix.extend(["--upgrade", "--reinstall"])
return prefix + args
def _pip_uninstall_argv(
self,
app: dict[str, Any],
installed_entry: dict[str, Any] | None = None,
) -> list[str]:
if self._pip_available():
prefix = [sys.executable, "-m", "pip", "uninstall", "-y"]
elif shutil.which("uv"):
prefix = ["uv", "pip", "uninstall", "--python", sys.executable]
else:
raise CliAppError("pip is not available and uv is not installed")View on GitHub (pinned to 42f37dc4c0)
When it happens
Trigger: Thrown at nanobot/apps/cli/service.py:870 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of HKUDS/nanobot@42f37dc4c0 (2026-08-26).
Data as JSON: /api/errors/17efe81e2457144b.
Report an issue: GitHub.