亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法打開應該位于基本路徑中的文件

無法打開應該位于基本路徑中的文件

Go
吃雞游戲 2023-05-22 17:28:23
我有一個 Go 項目(bazel-remote),當使用 Bazel 構建時,它試圖讀取在命令行中傳遞的 YAML 文件。此 YAML 文件與我運行命令的位置相同bazel run。但它無法運行,因為os.Open失敗了_no such file or directory_。我打印了basePathusing os.Getwd,因為有人建議我basePath可能設置錯誤。但是 mybasePath設置為 my 中/private/var/tmp/創建和存儲 Bazel 對象的位置:/private/var/tmp/_bazel`_`<username>``/312feba8ddcde6737ae7dd7ef9bc2a5a/execroot/__main__/bazel-out/darwin-fastbuild/bin/darwin_amd64_static_pure_stripped/bazel-remote.runfiles/__main`__如何basePath正確設置我的?為什么我的basePath設置到它所在的位置?
查看完整描述

1 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

以 開頭的二進制文件bazel run在內部 Bazel 目錄中執行。他們將有權訪問“運行文件”,這些文件是data二進制規則或其依賴項的屬性中提到的文件。例如,如果您有如下規則,您將能夠讀取foo.txt,但不能讀取bar.txt或 其他文件:


load("@io_bazel_rules_go//go:def.bzl", "go_binary")


go_binary(

    name = "hello",

    srcs = ["hello.go"],

    data = ["foo.txt"],

)

請注意,二進制文件的工作目錄對應于存儲庫根目錄,而不是定義二進制文件的目錄。您可以使用os.Getwd和進行調試filepath.Walk。


您提到過您想要訪問在命令行中傳入的 yaml 文件。據推測,您希望能夠訪問用戶傳入的任何文件,而不僅僅是屬性中提到的文件data。對于這種情況,請查看BUILD_WORKING_DIRECTORY環境變量(bazel run設置)。bazel run這給出了調用目錄的路徑。此外,BUILD_WORKSPACE_DIRECTORY是工作區根目錄的路徑。


查看完整回答
反對 回復 2023-05-22
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號