golang go build 报错 import cycle not allowed

傷城~ 2021-08-26 16:15 633阅读 0赞

困扰我多时的 go 编译报错:循环导入,代码肯定是没问题的,网上查说重新安装go 我觉得也不是太好的办法

  1. import cycle not allowed
  2. package day01/hello
  3. imports fmt
  4. imports errors
  5. imports runtime
  6. imports internal/bytealg
  7. imports internal/cpu
  8. imports runtime  

环境:

ubuntu16.04

go1.11.4

编辑器:vs code

分析:

首先是GOROOT 和GOPATH问题,一定要明确自己go 的安装目录,即GOROOT 不要写错,如果不知道自己的安装目录,可以用下面的命令查看go 安装地址

  1. $ whereis go
  2. #输出
  3. go: /usr/bin/go /usr/lib/go /usr/local/go /usr/share/go /usr/local/go/bin/go /usr/share/man/man1/go.1.gz
  4. #我可能是在不同的地方安装了多个版本的 go

GOPATH 是我们go代码的工作路径,正常配置自己的项目文件夹路径就可以,我的是在/home/zzy/goProject

go 环境查看

  1. $ go env
  2. #输出
  3. GOARCH="amd64"
  4. GOBIN="/usr/local/go/bin"
  5. GOEXE=""
  6. GOHOSTARCH="amd64"
  7. GOHOSTOS="linux"
  8. GOOS="linux"
  9. GOPATH="/home/zzy/goProject"
  10. GORACE=""
  11. GOROOT="/usr/local/go"
  12. GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
  13. GO15VENDOREXPERIMENT="1"
  14. CC="gcc"
  15. GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
  16. CXX="g++"
  17. CGO_ENABLED="1"
  18. #其中关键看GOPATH,GOROOT

我发现我的配置都没有错啊!我的go代码工作目录也是/home/zzy/goProjec 这个路径,说明GOPATH 也没有错,那到底是哪里错了!

最后我发现在执行whereis go 的时候,我有很多版本的go 而我在环境变量里只是配置了一个版本的GOROOT ,是go1.11.4

但是我在用查看go版本的时候,居然显示是go1.6

  1. go version

所以我估摸是我的go安装乱了,版本太多,导致在go build 的时候找不到正确的go 路径,然后我就开始一个一个删除

  1. sudo rm -r /usr/bin/go /usr/lib/go /usr/share/go /usr/share/man/man1/go.1.gz

最后只留下了我确认安装过的目录,也是我环境变量正确的目录

最后执行go build 没有报错!

附带修改go 环境变量方法

###### 在/etc/profile文件中添加变量【对所有用户生效(永久的)】

##### vim修改环境变量文件 :sudo vim /etc/profile

###### 在打开的文件末尾添加 export PATH=$PATH:/usr/local/go/bin即可

###### 最后一定要启用: source /etc/profile

分析,首先是GOROOT 和GOPATH问题,一定要明确自己go 的安装目录,即GOROOT 不要写错,如果不知道自己的安装目录,可以用

发表评论

表情:
评论列表 (有 0 条评论,633人围观)

还没有评论,来说两句吧...

相关阅读