转到1.5到1.6:不允许导入周期

时间:2016-02-03 04:31:17

标签: go

我尝试从Go 1.5.3迁移到Go 1.6以及我遇到的一些软件包#34;不允许导入循环"错误,当我试图为1.6构建它们时。

例如,为了构建我得到的golint工具:

import cycle not allowed
package github.com/golang/lint/golint
    imports flag
    imports errors
    imports runtime
    imports runtime/internal/atomic
    imports runtime

我的本​​地环境是否存在问题,或者有什么方法可以解决这个问题?

go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/radek/Projekty/Go"
GORACE=""
GOROOT="/home/radek/Software/Go/go1.6"
GOTOOLDIR="/home/radek/Software/Go/go1.6/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

3 个答案:

答案 0 :(得分:3)

前几天我发生了这件事。它与我的环境变量设置错误有关。

执行go version并检查您是否正在构建预期的分发。

如果它不是您期望的版本,请务必将$GOROOT和/或$GOPATH个变量更新为正确的设置。

https://golang.org/doc/install

答案 1 :(得分:1)

有自行导入包时会显示此错误。例如,在$GOPATH/src/github.com/myawesome/mistakes中,您有一个这样的文件:

package mistakes

import (
    "github.com/myawesome/mistakes"
)

func CreateComplicatedBugFromSimpleMistake(m mistakes.Mistake) {
    // done.
}

这就是我在做的事情。如果你的情况也是如此,你应该知道如何解决它。

答案 2 :(得分:0)

比较readlink -f $(which go)echo $GOROOT的输出,如果它们的输出不同,则应将$ GOROOT设置为指向正在运行的go二进制文件的根目录,反之亦然。