Skip to content
Merged
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions agentrun/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,16 @@
"MergeOptions",
}

# 可选依赖包映射:导入错误的包名 -> 安装使用的包名
# Optional dependency mapping: import error package name -> installation package name
# 所有 server 相关的可选依赖 / All server-related optional dependencies
_SERVER_INSTALL_CMD = "agentrun-sdk[server]"
_OPTIONAL_PACKAGES = [
("fastapi", _SERVER_INSTALL_CMD),
("uvicorn", _SERVER_INSTALL_CMD),
("ag_ui", _SERVER_INSTALL_CMD),
]


def __getattr__(name: str):
"""延迟加载 server 模块的导出,避免可选依赖导致导入失败
Expand All @@ -303,12 +313,14 @@ def __getattr__(name: str):
return getattr(server, name)
except ImportError as e:
# 检查是否是缺少可选依赖导致的错误
if "fastapi" in str(e) or "uvicorn" in str(e):
raise ImportError(
f"'{name}' requires the 'server' optional dependencies. "
"Install with: pip install agentrun-sdk[server]\n"
f"Original error: {e}"
) from e
error_str = str(e)
for package_name, install_name in _OPTIONAL_PACKAGES:
if package_name in error_str:
raise ImportError(
f"'{name}' requires the 'server' optional dependencies. "
f"Install with: pip install {install_name}\n"
f"Original error: {e}"
) from e
# 其他导入错误继续抛出
raise

Expand Down