老规矩,报错代码
cannot import name 'runtime_version' from 'google.protobuf'
ps :不想看过程的可以直接到最后面总结
最近在看工作流音频的节点,安装了三个节点
ComfyUI-HunyuanVideo_Foley
ComfyUI-MMAudio
ComfyUI_FL-CosyVoice3
然后重启comfyui就开始抽风,疯狂报错,一大堆脑壳疼,甚至长的我的报错都没法直接粘贴给豆包,因为豆包也当机了….
然后往下面一拖,一堆节点全部炸裂

好家伙,安装几个节点竟然炸了一堆节点
问题分析
先不管报错,这里可以很明确,肯定是python依赖包问题
报错分析
一般是直接给豆包的,但是我们可以先了解一下,看多了我都发现有规律了
第一个找的就是Traceback,一般报错会写回滚的代码,这个就是提示你报错了

然后往下面看,是哪个文件出问题,他会根据顺序来的,这个错了,然后调用谁(另外一个文件)就又报错,然后一直往下走,直到最终的错误尽头


已上图为例子,可以看到第一个报错是ComfyUI\\nodes.py
这个是节点读取文件,然后看下一个,读取哪个节点错误custom_nodes\\a-person-mask-generator
看到custom_nodes文件夹就知道是插件的问题了,反正就是这个什么person插件报错
下一个是site-packages\\mediapipe
看到site-packages,就是第三方依赖包了,反正这个mediapipe报错
继续site-packages\\tensorflow
这个更是熟的不得了,继续往下看,看到ImportError
好了,到底了,导入错误,明显就是依赖包的问题, cannot import name 'runtime_version' from 'google.protobuf'
感觉就是包的版本问题,可能新版本或者旧版本没有没有这个runtime_version,或者换名字了,或者换位置了
最后看看是哪个包(尽头),出现这个鬼东东site-packages\\google\\protobuf
好了,确定是protobuf的问题,盲猜是某个插件写了安装功能,然后强行升级或者降级这个东东,然后导致其他的包(按照报错就是mediapipe、tensorflow)也被强制更新了,然后就很多插件也一起出问题
谁的插件这么霸道啊,我还没有pip install requirement呢,你就自动装???我的环境被搞坏了ok???
交给AI
接下来的报错都差不多,基本都是这个错误,但是我还是把报错粘贴到txt里面,然后让豆包之类的给我分析(虽然这些ai不一定对,但起码能帮我省很多时间)
因为ai喜欢不懂装懂,所以我有时候都不太信,但是让他初步分析还是挺有的哦

看起来就是这个问题了,降级protobuf,然后顺带降级了tensorflow、grpcio-status等依赖包,然后DZ这个混蛋又升级回来,然后可能没有升级其他的依赖包…..
当然这是初步猜测,豆包说是cosyvoice3的问题,但是我在这个插件的依赖文件里面没看到descript-audiotools,反而在hunyuan看到了,反正先尝试吧
还好之前我升级comfyui的时候写了一篇文章,可以根据我之前的版本去升级
恢复protobuf版本
直接删除,然后重新安装
python.exe -m pip uninstall protobuf -y
python.exe -m pip install protobuf
果真有提示了

让我们看看哪些依赖包有问题
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
descript-audiotools 0.7.2 requires protobuf<3.20,>=3.9.2, but you have protobuf 7.34.0 which is incompatible.
googleapis-common-protos 1.70.0 requires protobuf!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.20.2, but you have protobuf 7.34.0 which is incompatible.
google-ai-generativelanguage 0.6.15 requires protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev,>=3.20.2, but you have protobuf 7.34.0 which is incompatible.
google-api-core 2.30.0 requires protobuf<7.0.0,>=4.25.8, but you have protobuf 7.34.0 which is incompatible.
grpcio-status 1.71.2 requires protobuf<6.0dev,>=5.26.1, but you have protobuf 7.34.0 which is incompatible.
mediapipe 0.10.21 requires protobuf<5,>=4.25.3, but you have protobuf 7.34.0 which is incompatible.
proto-plus 1.26.1 requires protobuf<7.0.0,>=3.19.0, but you have protobuf 7.34.0 which is incompatible.
tensorflow-intel 2.17.1 requires ml-dtypes<0.5.0,>=0.3.1, but you have ml-dtypes 0.5.4 which is incompatible.
tensorflow-intel 2.17.1 requires protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3, but you have protobuf 7.34.0 which is incompatible.
tensorflow-intel 2.17.1 requires tensorboard<2.18,>=2.17, but you have tensorboard 2.20.0 which is incompatible.
tf-keras 2.17.0 requires tensorflow<2.18,>=2.17, but you have tensorflow 2.20.0 which is incompatible.
一眼就看到了这个descript-audiotools,需要protobuf<3.20,然后有一些包最少的4.0以上…….不愧是版本冲突,而且这还是没法解决的死锁
先看看这个所谓descript-audiotools是我那三个插件哪个需要的的依赖,问题是我没找到,只找到hunyuan里面有类似的

查了一下还真的是

去除ComfyUI-HunyuanVideo_Foley
既然是死锁,那就舍弃一个,就是你了,先尝试一下,删除插件,然后删掉依赖包
装回尽量不冲突的protobuf版本

至于tenserflow-intel暂时不用管,反正也不会报错
还是一样的报错,看来得去社区看看了
在社区中直接查找,还真的找到了

runtime_version.py
原来不止是版本的问题,而是因为protobuf这个奇葩的东西,你如果降级的话,他会直接删除掉runtime_version.py这个文件
然后这个文件又是本地生成的,他并不是可以直接下载下来的
所以不管你换到什么版本,都不会有这个东东
虽然已经有头绪,但我还是先尝试一下试试
先卸载,然后装一个版本,然后去查看依赖库的文件


还真的没有,那我卸载安装最新版本试试


还真的找到了,看来只有最新版本才有,只要先备份再降级,然后把文件粘贴回来即可
当然我想试试最新版本会什么错误,手贱试试开comfyui

全部正常??啥意思?不是有冲突嘛?看来又得做实验了
运行冲突节点
既然正常了,那么肯定有问题,我要试试那些冲突的插件,用到这些会不会炸裂,直接让豆包帮我找找我的插件那些运用到了那些冲突的依赖包
直接试试DZ-FaceDetailer


真的报错了,果真是冲突的,这还是包冲突,跟插件需要的依赖不一样,毕竟没有插件的requirement是直接写这要哪个版本的protobuf的,所以启动comfyui的时候,并不会报错
这个是python依赖包之间的冲突,就是神仙来了也没用,除非你直接改python依赖库底层的代码….
不过我又有了奇怪的想法,是真的犯贱啊我
升级别的依赖包
纯手贱,不想乱搞的可以直接降级protobuf,这样最安全
查了一下插件的需求,那几个对mediapipe、insightface==0.7.3没有明确版本,那我直接升级mediapipe试试哈哈哈

然后使用check命令看看还有哪些依赖包冲突

果真不冲突了,嘻嘻,重启尝试能不能使用

直接导入失败了,看来作者的mediapipe应该有版本需求的才对,他竟然没写,更新一下插件试试,直接去github上面看看,他也是一样的….
看来得放弃,还是使用低版本算了
备份再降级
先把这个文件夹粘贴出来,然后再降级,然后把runtime_version.py文件粘贴回旧版本


检查一下,只剩下一些无关紧要的冲突

尝试重启comfyui,然后尝试一下
正常运行,nice,不过还是得试一下mediapipe的节点

能运行,但是并没有检测到人脸,奇怪,难道依赖包又有问题?
直接使用MediaPipe Face Mesh看看

看来包没问题,应该是DZ的参数调试问题,修改一下试试

检测是检测到了,但是有点脑残就对了,这个修复,这种近景其实根本就不需要修复脸,sdxl的图片其实已经够精致了,主要还是人脸的检测蒙版有问题

报错终于搞定,又浪费了3个小时,无语
总结
protobuf降级会导致缺失文件runtime_version.py,只有最新版本才有
直接从最新版本备份,粘贴过来就行



