使用模块转到版本中的导入失败

氨酚:

我希望我的程序使用特定版本的client-go,以便它与目标群集兼容。

但是以下语法:

import (
    "log"
    "os"
    "path/filepath"

    clientcmd "k8s.io/[email protected]/tools/clientcmd"
)

我用来实现构建客户端配置的方法如下:

    config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)

失败并显示以下错误消息:

▶运行main.go
软件包,主要导入k8s.io/[email protected]/tools/clientcmd:只能将path @ version语法与'go get'一起使用

我应该如何声明特定版本的输入?

icza:

将导入更改为

import "k8s.io/client-go/tools/clientcmd"

并执行命令:

go get k8s.io/[email protected]

使用的版本记录在go.mod文件中。上面的内容go getgo.mod根据给定的版本进行更改请注意,您也可以go.mod手动编辑(但最好将其保留在执行工具中)。如果您使用的是Beginning或更高版本,则仅需要修改导入路径v2,在这种情况下,主要版本必须是后缀,例如

import "k8s.io/client-go/tools/clientcmd/v2"

注意:

执行上述go get命令后,go.mod文件将被修改为包含如下require指令:

k8s.io/client-go v0.0.0-20190708094436-77c08c6b86df // indirect

这是因为go模块需要语义版本控制,而kubernetes-1.12.10不是semver2兼容版本号。尽管如此,go工具仍将解析该版本标记的77c08c6b86df0af19f718d9a57620c4e9b811d48commit,并在go.mod文件中使用它

在此处阅读有关此内容的更多信息:转到Wiki:模块:如何升级和降级依赖关系

另请参阅:Go博客:Go模块:v2和更高版本

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章