【问题标题】:golang compile simple app module not found (GOPATH?)找不到golang编译简单的应用程序模块(GOPATH?)
【发布时间】:2020-10-29 13:51:07
【问题描述】:

刚开始使用 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

请帮忙,设置有什么问题?

【问题讨论】:

    标签: ubuntu go gopath


    【解决方案1】:

    您需要使用replace 指令来指向包的本地路径。否则,Go 会尝试在实际路径所在的位置找到它——example.com/greeting。在您链接到的页面中,提到了这一点:


    对于生产用途,您可以在公司内部或互联网上的服务器上发布您的模块,然后 Go 命令将从那里下载它们。现在,您需要调整调用者的模块,以便它可以在您的本地文件系统上找到问候代码。

    为此,对 hello 模块的 go.mod 文件进行一些小改动。

    在 hello 目录中,打开 go.mod 文件,将其更改为如下所示,然后保存文件。

    module hello
    
    go 1.14
    
    replace example.com/greetings => ../greetings
    

    事实上,由于您使用的是模块(正如您在 go 1.15 中应该使用的那样!),我建议您不要设置 。这不是必需的,只是在“模块模式”中增加了混乱。

    【讨论】:

      猜你喜欢
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多