我正在尝试在这里使用 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 假设的不一致。
有关其他信息,请参阅此问题。
- 1 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消
