在 Ubuntu 16.04 中出现 GOPATH 错误 "go: cannot use path@version syntax in GOPATH mode"

Getting GOPATH error "go: cannot use path@version syntax in GOPATH mode" in Ubuntu 16.04

我无法在我的 $GOPATH 文件夹中 运行 go get git@github<user/repo>。 出现此错误:

go: cannot use path@version syntax in GOPATH mode

我只是想了解为什么即使在安装期间配置了 $GOPATHgo get 也无法正常工作。环境是 ubuntu。

~/$ echo $GOPATH
/home/user/go

正如您已经注意到的,您应该使用 go get github.com/<user>/<repo>

您看到的错误消息来自 go get 中实现的一项支持 Go modules 的新功能 - 您现在还可以指定依赖项的版本:go get github.com/<user>/<repo>@<version>,其中 version 是一个使用 semver 的 git 标签,例如v1.0.2.

我遇到了同样的问题并解决了在我的 .zshrc 中设置特定环境变量 export GO111MODULE=on(或 .bashrc 取决于您使用的 shell)并按顺序重新启动 shell启用模块。您可以在此处找到更多详细信息:https://github.com/golang/go/wiki/Modules

我也遇到了这个问题。经过一些搜索,以下工作通过使用 go mod 而不是 go get,这是 Golang Modules 的一个特征:

$ export GO111MODULE=on

$ go mod init <project name>

# go mod init HelloWorld
# or
# go mod init .

$ go mod download repo@version

# go mod download github.com/robfig/cron/v3@v3.0.0

如果您在尝试使用模块时遇到此错误,您应该在 go get 之前将目录更改为项目:

root@host:/# go get github.com/ibm-messaging/mq-golang/ibmmq@ff54c095001d81eed10615916a896512eb8d81ff
go: cannot use path@version syntax in GOPATH mode
root@host:/# cd myproject/
root@host:/myproject# ls go.mod 
go.mod
root@host:/myproject# go get github.com/ibm-messaging/mq-golang/ibmmq@ff54c095001d81eed10615916a896512eb8d81ff
go: finding github.com ff54c095001d81eed10615916a896512eb8d81ff
go: finding github.com/ibm-messaging/mq-golang/ibmmq ff54c095001d81eed10615916a896512eb8d81ff
go: finding github.com/ibm-messaging/mq-golang ff54c095001d81eed10615916a896512eb8d81ff
go: finding github.com/ibm-messaging ff54c095001d81eed10615916a896512eb8d81ff

在使用模块初始化我的项目之前,当 运行 $ go get github.com/<user>/<repo>@<version> 在一个空项目上时,我在使用 Go v1.14 时遇到了这个错误。

为了解决问题,我使用以下方法创建了一个 go.mod 文件:

$ go mod init

我能够成功地重新运行 get 命令,它下载了供应商的包,更新了 go.mod 文件,并创建了一个 go.sum 文件。

当我在初始化 go mod 的目录之外的目录中尝试 运行 命令时,

运行 陷入了这个问题。为了下载具有特定版本的 module,go 需要 go.mod 文件,该文件可以跟踪同一 module 的多个版本。然而,尝试将 module 下载到 go module 目录之外的任何其他地方(将引用 GOPATH 来存储下载 module)将失败,因为没有选项跟踪同一 mod 规则的不同版本。

按照 https://gist.github.com/nikhita/432436d570b89cab172dcf2894465753

处的说明更新版本

这对我有用!