我试图了解榛子的用途和用途。
对于this项目, 运行命令是 bazel run -c opt:train_ptn---init_model = {} 。此命令和仅 python train_ptn.py 有什么区别?
此外,这个github项目仅包含python脚本,为什么我们需要bazel来运行该项目?
答案 0 :(得分:4)
以下是bazel run
的文档:https://docs.bazel.build/versions/master/user-manual.html#run
通常,bazel run //foo:bin
确保目标//foo:bin
及其所有依赖项均已构建且是最新的,然后在定义良好的工作目录中并使用某些环境变量来运行目标设置。
将其与直接运行二进制文件进行比较:工作目录和环境可能包含任何内容(Bazel无法对其进行控制),因此二进制文件可能会或可能不会在期望的位置找到其数据文件和依赖项。即使//foo:bin
是Python脚本,并且您是在正确的工作目录中运行它的,其某些依赖项也可能是需要重建的生成文件。
在特殊情况下,例如您链接的项目,直接运行二进制文件(或使用Python)是可以的,但是您必须知道这一点。使用bazel run
可以减轻您不必知道直接运行脚本的安全性的负担,并且可以防止您将来对项目进行更改,例如,如果有人将生成的源文件添加到程序包中。 >