golang 编译未找到简单的应用程序模块(GOPATH?)
golang compile simple app module not found (GOPATH?)
刚开始使用 go,卡在了一个非常简单的应用程序上(来自这里 https://golang.org/doc/tutorial/call-module-code)
当我尝试编译 hello.go:
...
hello.go:6:5: cannot find module providing package example.com/greeting
...
环境是这样设置的(Ubuntu 20.04)
root@591c0587972e:~/proj/test/go.test# go env | grep GOPA
GOPATH="/root/go:/root/proj/test/go.test"
root@591c0587972e:~/proj/test/go.test# go version
go version go1.15.3 linux/amd64
源代码https://github.com/myxit/golang-wtf
请帮忙,设置有什么问题?
您需要使用 replace
指令指向包的本地路径。否则 Go 会尝试在实际路径所在的位置找到它——在 example.com/greeting
。在您 link 访问的页面中,提到了:
对于生产用途,您可以在公司内部或互联网上的服务器上发布模块,Go 命令将从那里下载它们。现在,您需要调整调用者的模块,以便它可以在您的本地文件系统上找到问候代码。
为此,对 hello 模块的 go.mod 文件做一个小改动。
在 hello 目录中,打开 go.mod 文件,将其更改为如下所示,然后保存文件。
module hello
go 1.14
replace example.com/greetings => ../greetings
事实上,由于您正在使用模块(就像您应该使用 go 1.15 一样!)我建议完全不要设置 。它不是必需的,只是在“模块模式”中增加了混乱。
刚开始使用 go,卡在了一个非常简单的应用程序上(来自这里 https://golang.org/doc/tutorial/call-module-code) 当我尝试编译 hello.go:
...
hello.go:6:5: cannot find module providing package example.com/greeting
...
环境是这样设置的(Ubuntu 20.04)
root@591c0587972e:~/proj/test/go.test# go env | grep GOPA
GOPATH="/root/go:/root/proj/test/go.test"
root@591c0587972e:~/proj/test/go.test# go version
go version go1.15.3 linux/amd64
源代码https://github.com/myxit/golang-wtf
请帮忙,设置有什么问题?
您需要使用 replace
指令指向包的本地路径。否则 Go 会尝试在实际路径所在的位置找到它——在 example.com/greeting
。在您 link 访问的页面中,提到了:
对于生产用途,您可以在公司内部或互联网上的服务器上发布模块,Go 命令将从那里下载它们。现在,您需要调整调用者的模块,以便它可以在您的本地文件系统上找到问候代码。
为此,对 hello 模块的 go.mod 文件做一个小改动。
在 hello 目录中,打开 go.mod 文件,将其更改为如下所示,然后保存文件。
module hello
go 1.14
replace example.com/greetings => ../greetings
事实上,由于您正在使用模块(就像您应该使用 go 1.15 一样!)我建议完全不要设置 。它不是必需的,只是在“模块模式”中增加了混乱。