在bazel设置中运行genrule
时遇到了python错误similar to this。
此错误的根本原因是某些语言环境变量未按预期设置,因此未使用正确的编码读取文件。
设置
build --action_env="LANG=en_GB.UTF-8"
run --action_env="LANG=en_GB.UTF-8"
test --action_env="LANG=en_GB.UTF-8"
我的.bazelrc
中的是一种解决方法,但感觉有些古怪。为Genrules配置bazel的语言/区域设置的最佳方法是什么?
答案 0 :(得分:1)
--action_dev
/ --test_env
是传递环境变量的唯一方法。
可以在.bazelrc
中指定它,也可以将其设置为bazel
命令的参数。
或者,如果您只需要为特定的genrule
设置env变量,则可以在genrule
中显式地进行设置。请注意FOO=bar
中的cmd
:
genrule(
name = "foo",
srcs = [],
outs = ["foo.h"],
cmd = "FOO=bar ./$(location create_foo.pl) > \"$@\"",
tools = ["create_foo.pl"],
)