当我使用`go install`时,它返回的不是主包

Posted

技术标签:

【中文标题】当我使用`go install`时,它返回的不是主包【英文标题】:When I using `go install`, it returns not a main package 【发布时间】:2021-12-22 17:05:19 【问题描述】:

我在我的代码中使用了import "github.com/go-redis/redis/v8"。环境是go1.17.2 Windows AMD64。我执行了go install github.com/go-redis/redis/v8@latest,但结果是package github.com/go-redis/redis/v8 is not a main package。我的操作或环境配置有什么问题。 go env GO111MODULE=on.

当我执行go run main.go 时,它会在导入github.com/go-redis/redis/v8 的行显示cannot find package

go.mod 中的内容,(带有简单的go mod initgo mod tidy):

module ...
go 1.17

require github.com/go-redis/redis/v8 v8.11.4

require (
    github.com/cespare/xxhash/v2 v2.1.2 // indirect
    github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
)

【问题讨论】:

go.mod的内容是什么? 我认为你想要 go mot init 并 go get 而不是 go install 【参考方案1】:

您的go.mod 的模块名称无效。我在我的环境中尝试使用类似的模块名称并使用go build 进行编译,它报告:

$ go build
go: malformed module path "...": invalid path element "..."

试试这样的名字:

module tempredis
go 1.17

require github.com/go-redis/redis/v8 v8.11.4

或者使用命令go mod init tempredis创建模块,然后添加github.com/go-redis/redis/v8的依赖。

请参阅document。

【讨论】:

实际上,我已经使用命令go mod initgo mod tidy 创建了go.mod 文件。您能帮我检查一下我的问题中go.mod 文件中的内容吗?非常感谢。当我执行go build 时,它也会报告cannot find package @Eternally_Ascend 答案已更新。你的go.mod 在哪里?和main.go在同一个目录吗?你是否在同一目录路径中执行go build?也许在go mod init 之后你需要手动go get github.com/go-redis/redis/v8【参考方案2】:

我使用import "github.com/go-redis/redis",然后重新启动进程(包括go mod initgo mod tidygo install),它最终显示正确的结果。但是go redis的版本会自动更改为go.mod文件中的v6.15.9+incompatible

【讨论】:

以上是关于当我使用`go install`时,它返回的不是主包的主要内容,如果未能解决你的问题,请参考以下文章

运行 GO111MODULE=on go install 。 ./cmd/... 在云初始化中

在 Facebook 集成中,当我单击登录按钮时,它会显示加载并返回主屏幕?

当我执行“make install”时,它不会创建目录

为 Linux 安装 R 包时出错

go install

登录后,Storyboard在主控制器上返回nil