我试图了解 bazel 的目的和用法。
对于 这个项目,运行命令是bazel run -c opt :train_ptn -- --init_model={}。这个命令和只有python train_ptn.py 有什么区别?
另外,这个github项目只包含python脚本,为什么我们需要bazel来运行这个项目?
这是文档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
可以减轻您必须知道直接运行脚本是安全的负担,并且它可以保护您免受未来对项目的更改,例如,如果有人将生成的源文件添加到包中。
归档时间: |
|
查看次数: |
2561 次 |
最近记录: |