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

缺少 PromQL 模块

缺少 PromQL 模块

Go
MMMHUHU 2022-11-15 10:45:03
我正在尝试在这里使用 promql 包package mainimport (    "fmt"        "github.com/prometheus/prometheus/promql/parser")func main() {    fmt.Println("Hello")    parser.ParseExpr("foobar")    }导入时遇到问题。这是错误:没有必需的模块提供包 github.com/prometheus/prometheus/promql/parser;添加它:去获取 github.com/prometheus/prometheus/promql/parser(编译)我尝试go get github.com/prometheus/prometheus/promql/parser按照建议运行,但失败了。去获取:找到模块 github.com/prometheus/prometheus@upgrade (v2.5.0+incompatible),但不包含包 github.com/prometheus/prometheus/promql/parser这是我go.mod目前的:module foo.com/bar/parsergo 1.17require github.com/prometheus/prometheus v2.5.0+incompatible // indirect
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

使用go get github.com/prometheus/prometheus@83032011a5d3e6102624fe58241a374a7201fee8(该提交是此时的最新版本,v2.33.4)

需要这样做的原因

这是 Go 模块的一个已知问题。Prometheus 的语义版本控制将 Prometheus 的行为版本化为服务器,而不是将其代码作为库。通过将模块路径更改为 v2,我们建议 Prometheus 作为库遵守 Go Modules 的契约,但事实并非如此,即即使在次要版本中也有许多重大变化。

Prometheus 不打算用作图书馆。现在情况发生了变化,即使我们不接受所有通用贡献,它也打算照原样使用。

您看到的错误是因为默认情况下go get抓取旧版本v2.5.0,该版本于 2018 年发布并且不包含该parser软件包。发生这种情况是因为 Prometheus 使用的版本控制方案与 Go 假设的不一致。

有关其他信息,请参阅此问题


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号