Poetry环境中Protobuf已安装却无法导入,MLRun导入失败求解
解决MLRun导入时的Protobuf依赖问题
问题根源
你的问题主要由两个因素导致:
- 手动指定的PyYAML wheel版本(
cp39)与当前Python 3.10环境不兼容,干扰了Poetry的依赖解析逻辑,使得Protobuf未被正确安装。 - MLRun 1.4.1对Protobuf存在隐式依赖,但由于上述兼容性问题,Poetry未自动拉取匹配的Protobuf包。
解决方案
1. 替换兼容的PyYAML依赖
将pyyaml的本地wheel依赖改为版本号声明,让Poetry自动匹配Python 3.10的兼容版本:
修改pyproject.toml中的依赖段:
[tool.poetry.dependencies] python = "^3.10" mlrun = "1.4.1" pyyaml = "^5.4.1"
2. 显式添加Protobuf依赖
直接在pyproject.toml中指定MLRun 1.4.1兼容的Protobuf版本,强制Poetry安装:
[tool.poetry.dependencies] python = "^3.10" mlrun = "1.4.1" pyyaml = "^5.4.1" protobuf = ">=3.19.0,<4.0.0"
(注:MLRun 1.4.1适配3.19.x到3.20.x版本的Protobuf,也可直接指定具体版本如3.20.1)
3. 清理缓存并重新同步依赖
执行以下命令清理Poetry缓存并重新安装依赖:
poetry cache clear --all pypi poetry install --sync
4. 确认虚拟环境激活状态
确保运行代码时已激活Poetry创建的虚拟环境:
poetry shell
或直接通过Poetry运行脚本:
poetry run python your_script.py
完成以上操作后,重新导入MLRun即可正常加载Protobuf依赖。
内容的提问来源于stack exchange,提问作者George Liu
相关产品推荐
相关产品推荐

