我想将一个文件夹作为 Bazel 中 py_test 的依赖项传递。该文件夹包含带有特殊字符“=”的文件名,例如“equal=.txt”。我收到终端打印信息,提示“zipper.exe”无法找到该文件。这是一个简单的例子。
BUID文件:
py_test(
name = "bazel_char_test",
srcs = ["bazel_char_test.py"],
data = ["equal.txt"]+["equal = .txt"],
)
错误信息:
错误:C:/path/BUILD:31:8:构建 Python zip://project_path:bazel_char_test 失败:(退出 -1):zipper.exe 失败:执行 PythonZipper 命令时出错(来自目标//project_path:bazel_char_test)external\bazel_tools\tools\zip\zipper\zipper.exe cC bazel-out/x64_windows-fastbuild/bin/project_path/bazel_char_test.zip...(跳过剩余 1 个参数)文件 .txt=project_path/equal = .txt 似乎不存在。目标//project_path:bazel_char_test 构建失败
我检查了一下,文件确实存在。如果我把字符“=”改成“+”,就能找到文件,测试就开始了。
因此,执行“zipper.exe / PythonZipper 命令”时会发生故障。假设我将文件名与目标名称和包名称等同起来,这应该符合BAZEL 文档的规定,它应该处理带有等号的文件名。“目标名称必须完全由 a–z、A–Z、0–9 和标点符号 !%-@^_"#$&'() -+,;<=>?[]{|}~/..*” 中的字符组成。似乎 = 符号的存在本身就会导致错误。它前后是否有空格似乎无关紧要。
有人知道这里发生了什么/我做错了什么吗?我正在使用 Bazel 7.5.0。当然,一种解决方法是更改文件名(我认为用等号作为文件名不是最好的选择),但如果它们能保持不变就更好了。