为了账号安全,请及时绑定邮箱和手机立即绑定

使用模块进行版本化导入失败

使用模块进行版本化导入失败

Go
慕勒3428872 2022-04-20 19:27:55
我希望我的程序使用特定版本的client-go,以便它与目标集群兼容。但是以下语法:import (    "log"    "os"    "path/filepath"    clientcmd "k8s.io/client-go@kubernetes-1.12.10/tools/clientcmd")我用它来构建我的客户端配置,如下所示:    config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)失败并显示此错误消息:▶ go run main.gopackage main imports k8s.io/client-go@kubernetes-1.12.10/tools/clientcmd: 只能使用 path@version 语法和 'go get'我应该如何陈述特定的版本化输入?
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

将您的导入更改为


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

并执行命令:


go get k8s.io/client-go@kubernetes-1.12.10

使用的版本记录在go.mod文件中。以上go get内容将go.mod根据给定的版本进行更改。请注意,您也可以go.mod手动编辑(但最好将其留给 go 工具)。如果您使用的版本为开头或更高版本,则只需修改导入路径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 工具仍会确定此版本标记了77c08c6b86df0af19f718d9a57620c4e9b811d48commitgo.mod ,并在文件中使用它。


查看完整回答
反对 回复 2022-04-20
  • 1 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信