【问题标题】:Go 1.5 to 1.6: import cycle not allowed转到 1.5 到 1.6:不允许导入周期
【发布时间】:2016-02-03 04:31:17
【问题描述】:

我正在尝试从 Go 1.5.3 迁移到 Go 1.6,对于某些包,当我尝试为 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"

【问题讨论】:

  • 你跑go get -u github.com/golang/lint/golint了吗?
  • 你是如何安装 Go 1.6 的?另外,你能包括which go的输出吗?
  • 但是你确定你运行的是$GOROOT/bin/go而不是旧版本吗?
  • 如果您使用正确的环境变量运行正确的二进制文件,那么您可能在其中捕获了 /vendor 目录。您可以尝试使用 go1.5.3 和 GO15VENDOREXPERIMENT=1 设置构建,看看是否有相同的错误。
  • 谢谢大家,看来我没有更新 PATH 变量去二进制文件。嗯,我现在觉得很蹩脚。重启工作,因为终端从头开始加载环境变量。

标签: go


【解决方案1】:

前几天我也遇到过这种情况。这与我的环境变量设置错误有关。

执行 go version 并检查您是否正在使用预期的 go 发行版进行构建。

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

https://golang.org/doc/install

【讨论】:

  • 这似乎不是问题的具体答案。如果是并且我不明白为什么,那么我想你应该更好地解释这种关系。
  • 这件事发生在很久以前,所以我不记得细节了。话虽如此,我相信如果您的 PATH(或其他 go vars)指向不同的 Go 版本,那么导入会在构建时混淆并导致循环。正确设置环境变量可以避免这个问题。
  • 在我的情况下,问题要简单得多:一个包正在导入自己。
  • 是的,这就是错误消息的描述。但这并不是在这种特殊情况下出了什么问题。通常,当您看到该错误时,您有一个导入周期,但是在这个特定问题的情况下,它是环境变量配置错误。
【解决方案2】:

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

package mistakes

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

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

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

【讨论】:

  • 是的,这个案子我很清楚。当我从 1.5 迁移到 1.6 并且没有刷新终端时,我的本地环境中存在某种混合版本的问题。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多