Ubuntu下生成c4 id运行main.go报找不到对应包的问题求助
修复C4包找不到问题的操作步骤
核心报错原因
两个底层问题叠加触发了找不到包的报错:
- Go语言的包路径做严格大小写校验,没有模糊匹配容错:你代码里导入的包路径是小写开头的
github.com/avalanche-io/c4/id,但实际有效包的路径前缀是大写开头的Avalanche-io,两者在路径规则下完全是两个不相关的地址,自然无法匹配到已拉取的代码。 - 之前执行的拉取命令存在无效路径:
go get github.com/Avalanche-io没有指向具体的Go包,拉取动作不会生效,没法把对应代码放到GOPATH的匹配目录下,加上大小写混淆,拉取下来的目录结构和你代码里import的路径完全对不上。
按顺序执行修复
- 清理之前错误拉取的残留包,避免目录混乱
rm -rf ~/go/src/github.com/avalanche-io rm -rf ~/go/src/github.com/Avalanche-io - 按照正确的大小写路径拉取指定版本的C4依赖
go get github.com/Avalanche-io/c4/id@v0.7.0 go get github.com/Avalanche-io/c4/cmd/c4@v0.7.0 - 修正
main.go中的导入路径,把小写的组织名改成和实际包路径一致的大写开头
原来的错误导入:
修正为:c4 "github.com/avalanche-io/c4/id"c4 "github.com/Avalanche-io/c4/id" - 把终端的工作目录切换到
main.go所在的文件夹,重新执行运行命令go run main.go
补充说明
- 你当前使用的Go 1.13版本默认运行在GOPATH模式,这个模式下没有Go Modules的路径容错能力,哪怕一个字母的大小写错误,都会直接触发包找不到的报错
- 执行完拉取命令后可以先运行
go env GOPATH确认输出的路径和报错提示的/home/vinay/go一致,没有出现GOPATH配置错位的问题 - 不需要手动克隆仓库代码,只要通过正确的路径执行
go get,Go会自动把依赖放到GOPATH的对应目录下,不需要额外修改环境配置 - 后续要生成视频文件的C4 ID,只要把代码里的
file := "main.go"改成视频文件的对应路径,就能正常输出结果,不需要调整其他逻辑
内容的提问来源于stack exchange,提问作者Vinay Kumar
相关产品推荐
相关产品推荐

