tech
rich/tenacity版本不兼容
# 安装 Hermes Agent 后提示依赖冲突 `rich`/`tenacity` 版本不兼容,怎么解决?
有朋友在 PowerShell 里用 pip 从 GitHub 安装 Hermes Agent 时,安装成功了但出现一堆红色警告:
```bash
pip install git+https://github.com/nousresearch/hermes-agent.git
```
如果你看到的输出最后有这些红字,那就是同一个问题:
```
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed.
streamlit 1.32.0 requires rich<14,>=10.14.0, but you have rich 14.3.4 which is incompatible.
streamlit 1.32.0 requires tenacity<9,>=8.1.0, but you have tenacity 9.1.4 which is incompatible.
```
先说结论:**Hermes 安装成功了,只是和电脑上已有的 streamlit 包有依赖冲突。**
## 为什么会这样
pip 的依赖解析器并不完美。Hermes Agent 要求 `rich>=14.3.3` 和 `tenacity>=9.1.4`,但你电脑上已有的 `streamlit 1.32.0` 要求 `rich<14` 和 `tenacity<9`。两个包对同一个依赖的版本要求撞车了。
说白了:不同项目依赖了同一个库的不同版本。
## 解决方法
**方法一:用虚拟环境安装(推荐)**
这是 Python 社区的标准做法,从根本上避免依赖冲突:
```bash
# 创建虚拟环境
python -m venv hermes-env
# 激活虚拟环境
hermes-env\Scripts\activate
# 在虚拟环境里安装 Hermes
pip install git+https://github.com/nousresearch/hermes-agent.git
```
这样 Hermes 的依赖和系统其他 Python 包的依赖完全隔离,互不干扰。
**方法二:降级 rich 和 tenacity(不推荐)**
如果你不想用虚拟环境,可以强制降级:
```bash
pip install "rich<14" "tenacity<9"
```
⚠️ 但这会让 Hermes 无法使用新版本功能,而且可能导致其他依赖新版本的包出问题。
**方法三:忽略冲突(如果暂时不影响使用)**
如果 Hermes 能正常运行,只是报警告,可以暂时不管。后续使用时如果报错再处理。
## 验证是否解决
用虚拟环境安装后,运行:
```bash
hermes --version
```
如果正常显示版本号,说明安装成功且没有冲突。
## 为什么推荐虚拟环境
Python 项目之间的依赖冲突非常常见。虚拟环境的作用就是给每个项目一个独立的"房间",各自装各自的依赖,互不打扰。这不仅是解决当前问题的好方法,也是 Python 开发的最佳实践。