我正在尝试使用promql包这里。
package main
import (
"fmt"
"github.com/prometheus/prometheus/promql/parser"
)
func main() {
fmt.Println("Hello")
parser.ParseExpr("foobar")
}在进口上有困难。这是一个错误:
没有必需的模块提供包github.com/prometheus/prometheus/promql/parser;来添加它: go获取github.com/prometheus/prometheus/promql/parser (编译)
我试着按建议运行go get github.com/prometheus/prometheus/promql/parser,但失败了。
go get: Modgithub.com/prometheus/prometheus@upgrade (v2.5.0+incompatible),但不包含包v2.5.0+incompatible
以下是我目前的go.mod:
module foo.com/bar/parser
go 1.17
require github.com/prometheus/prometheus v2.5.0+incompatible // indirect发布于 2022-02-28 01:08:24
使用go get github.com/prometheus/prometheus@83032011a5d3e6102624fe58241a374a7201fee8 (提交是目前最新的版本,v2.33.4)
这是需要是这样吗?的原因
这是Go模块的一个已知问题。Prometheus版本的语义版本是Prometheus作为服务器的行为,而不是作为库的代码。通过将模块路径更改为v2,我们建议Prometheus遵循Go模块作为库的契约,但它没有,也就是说,即使是在一个小版本中,也会发生许多破坏性的更改。
普罗米修斯不打算用作图书馆。现在这种情况已经改变了,即使我们不接受所有一般用途的捐款,它也打算作为这样的用途来使用。
您所看到的错误是因为go get默认抓取了一个旧版本的v2.5.0,该版本早在2018年就发布了,不包括parser包。这是因为Prometheus使用的版本控制方案与Go假设的版本控制方案不一致。
有关其他信息,请参见本期。
https://stackoverflow.com/questions/71289498
复制相似问题