From 9c49b4eada3ae35c14e68fea968bf407360c4b58 Mon Sep 17 00:00:00 2001 From: VascoSch92 Date: Wed, 20 May 2026 15:52:28 +0200 Subject: [PATCH] docs(sdk): install openhands-sdk and openhands-tools as a matched set The PyPI install instructions ran four separate pip commands without version alignment. Because openhands-tools depends on openhands-sdk without a version constraint and imports its internals directly, this can produce a mismatched pair (e.g. a newer openhands-tools against an older, not-upgraded openhands-sdk), which fails at import with ModuleNotFoundError: No module named 'openhands.sdk.utils.path'. Install the packages together in a single pip command, use -U so an existing copy is upgraded, and add a warning that the two packages must stay on the same version. --- sdk/getting-started.mdx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/sdk/getting-started.mdx b/sdk/getting-started.mdx index 5211aca02..b1a160521 100644 --- a/sdk/getting-started.mdx +++ b/sdk/getting-started.mdx @@ -82,12 +82,17 @@ export LLM_API_KEY=your-api-key-here ```bash - pip install openhands-sdk # Core SDK (openhands.sdk) - pip install openhands-tools # Built-in tools (openhands.tools) - # Optional: required for sandboxed workspaces in Docker or remote servers - pip install openhands-workspace # Workspace backends (openhands.workspace) - pip install openhands-agent-server # Remote agent server (openhands.agent_server) + # Core SDK + built-in tools — install together so their versions stay aligned + pip install -U openhands-sdk openhands-tools + + # Optional: sandboxed workspaces in Docker or remote servers. + # List every package in one command so they all resolve to the same version. + pip install -U openhands-sdk openhands-tools openhands-workspace openhands-agent-server ``` + + + `openhands-sdk` and `openhands-tools` are a matched set: they are built, tested, and released together at the same version number, and `openhands-tools` imports `openhands-sdk` internals directly. Always install and upgrade them in a **single** `pip` command so their versions match. Installing them separately can leave a newer `openhands-tools` against an older `openhands-sdk` (for example, when a previously installed copy is not upgraded), which fails at import with errors like `ModuleNotFoundError: No module named 'openhands.sdk.utils.path'`. To pin a specific release, use the same version for both, e.g. `pip install "openhands-sdk==1.22.1" "openhands-tools==1.22.1"`. +