运行glide install报错:无法找到github.com/golang/protobuf/proto/testdata下的"."包
解决Glide安装时找不到
github.com/golang/protobuf/proto/testdata的问题 我之前也碰到过类似的依赖扫描坑,结合你说的「之前编译正常、没新增依赖」的情况,大概率是github.com/golang/protobuf的版本变动搞的鬼——最新版本的protobuf仓库可能移除了testdata目录,但你的某个间接依赖还在引用这个测试目录,而Glide默认会扫描所有文件(包括测试代码),所以触发了找不到包的错误。
下面是几个优先级从高到低的修复方案,你可以挨个尝试:
1. 锁定protobuf的稳定旧版本
直接指定一个包含testdata目录的旧版本protobuf,阻止Glide拉取最新的变更版本:
- 编辑项目根目录的
glide.yaml,添加或修改protobuf的版本配置:
(v1.5.2是确认包含testdata目录的稳定版本,你也可以根据实际情况选择其他合适的旧版本)- package: github.com/golang/protobuf version: v1.5.2 - 执行命令更新依赖:
这个命令只会更新指定的protobuf包,不会递归更新其他依赖,避免引入新的问题。glide up --no-recurse
2. 清理Glide缓存
有时候缓存里的旧文件会导致扫描异常,清理后重新安装就能解决:
rm -rf ~/.glide/cache glide install
3. 排除测试相关目录
如果是某个依赖的测试代码误引用了testdata,可以在glide.yaml中排除这些测试目录,让Glide跳过扫描:
exclude: - github.com/golang/protobuf/proto/testdata - github.com/golang/protobuf/proto/test_proto
添加后重新执行glide install即可。
4. 考虑迁移到Go Modules(可选)
Glide已经停止维护了,Go Modules是官方推荐的依赖管理工具,稳定性和兼容性都更好。如果以上方案都没法彻底解决问题,可以考虑逐步迁移到Go Modules,避免后续再碰到类似的依赖扫描问题。
内容的提问来源于stack exchange,提问作者Benoît Vernier
相关产品推荐
相关产品推荐

