golang在go get时提示xx cannot download,xxx is a GOROOT, not a GOPATH. For more details see: 'go help ...

新换了电脑,把之前的go代码全拷贝了过来,顺便升了个级,在设置完GOPATH和GOROOT后,发现运行go version已经没问题了,是最新版本,但是当想下载一个新的包时,提示我我设置的GOPATH是GOROOT.

go get github.com/akavel/rsrc

package github.com/akavel/rsrc: cannot download, F:\GoPath is a GOROOT, not a GOPATH. For more details see: 'go help gopath'

我当时以为是设置的时候翻车了,在我仔细对照了几次配置文件后,发现并没有问题.本着"程序永远不会出错,错的一定是我,找不到错就人机对骂"的原则,我又从头走了几遍流程,问题还是没解决,只好去网上找,网上大多数都是说怎么配置gopath和goroot,或者说不要配置成一个目录,我的goroot和gopath都不在同一个磁盘下,显然不能解决我的问题.

随后找到一篇stackoverflow的文章,下面是链接和内容:

https://stackoverflow.com/questions/42809990/go-get-cannot-download-home-azhukov-go-is-a-goroot-not-a-gopath

"This error is caused by the go tool detecting a Go installation in your GOPATH. It's not telling you that your GOPATH is the GOROOT (that's a different message), it's telling your GOPATH looks like a GOROOT.

Cleaning out your GOPATH and running go get again will fix the error."

翻译一下就是这个错误除了说我们的GOPATH是GOROOT以外,还有一种解释,就是"我们的GOPATH看起来像GOROOT",清理一下GOPATH再运行.

这样就大概有思路了,我把我的GOPATH和真正的GOROOT中的src目录对照了一下,发现有很多目录是相同的,这是因为之前的GOPATH配置的不规范(我也不知道当时是啥情况,毕竟谁都有第一次).然后很明显的,我把GOPATH的src和GOROOT的src中的全部相同目录都删除掉,就可以执行go get了.

本着方便大家,我又尝试最小删除重复目录,最后发现,只要删除GOPATH下src下的cmd目录,就可以了.

结论:删除GOPATH中src目录中的cmd目录,再执行go get -v xxxxx

推荐阅读更多精彩内容

  • 1. 分布式系统核心问题 参考书籍:《区块链原理、设计与应用》 一致性问题例子:两个不同的电影院买同一种电影票,如...
    molscar阅读 508评论 0 0
  • 元旦放假,婆婆不在家,有幸做家庭主妇一日。早晨,五点起床,给孩儿爸做午饭,因为厨艺不精,只能做一道简单的香菇土豆片...
    石六七阅读 271评论 0 9
  • GUI界面安装第三方库 快捷键ctrl+alt+s 点击project 点击右上角加号进行安装 如何获取文件的路径...
    乡村蝙蝠侠阅读 142评论 0 0
  • 纸上的朱自清告诉我 雨很美 像牛毛,像花针 密密地斜织着 但在我眼里的雨 像喷嚏,像唾沫 一层层的铺在脸上 就像刚...
    古月不识月阅读 145评论 0 2
  • 极视明DVT智能眼镜,是一款高科技产品,能有效去掉之前对近视附带品,不接触性矫正,是唯一一款数字训练矫正产品,...
    9695682068d3阅读 116评论 0 0