我正在嘗試在這里使用 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;添加它:去獲取github.com/prometheus/prometheus/promql/parser(編譯)
我嘗試go get github.com/prometheus/prometheus/promql/parser按照建議運行,但失敗了。
go get:找到模塊github.com/prometheus/prometheus@upgrade(v2.5.0 不兼容),但不包含包github.com/prometheus/prometheus/promql/parser
這是我go.mod目前的:
module foo.com/bar/parser
go 1.17
require github.com/prometheus/prometheus v2.5.0 incompatible // indirect
uj5u.com熱心網友回復:
使用go get github.com/prometheus/prometheus@83032011a5d3e6102624fe58241a374a7201fee8(該提交是此時的最新版本,v2.33.4)
需要這樣做的原因是
這是 Go Modules 的一個已知問題。Prometheus 的語意版本控制將 Prometheus 作為服務器的行為,而不是將其代碼作為庫。通過將模塊路徑更改為 v2,我們建議 Prometheus 遵守 Go Modules 作為庫的合同,但事實并非如此,即即使在次要版本中也有許多重大變化。
和:
Prometheus 不打算用作圖書館。現在情況發生了變化,即使我們不接受所有通用貢獻,它也打算這樣使用。
您看到的錯誤是因為默認情況下go get抓取的是舊版本v2.5.0,該版本早在 2018 年發布,不包含該parser軟體包。發生這種情況是因為 Prometheus 使用的版本控制方案與 Go 所假設的不一致。
有關其他資訊,請參閱此問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434816.html
