如何在Libsonnet中从根目录使用相对路径导入文件?
Libsonnet 根目录相对导入的解决方案
你遇到的问题是因为Libsonnet里的./开头路径是相对于当前文件所在目录的,并非项目根目录,所以直接写./appl/...会在当前文件的同级目录查找appl文件夹,自然找不到目标文件。
要实现基于项目根目录的导入,有两种实用方法:
运行时指定搜索路径
使用jsonnet命令的-J(或全称--jpath)参数,把项目根目录加入模块搜索路径。比如你的项目根目录是/opt/my-project,运行时执行:jsonnet -J /opt/my-project your-target-file.libsonnet之后在Libsonnet文件里,直接用根目录下的路径导入即可,无需加开头的
.:import 'appl/example/test/abc.libsonnet'设置环境变量永久生效
如果不想每次运行都手动加参数,可以设置JSONNET_PATH环境变量,把项目根目录添加进去:- Linux/macOS:在终端执行
export JSONNET_PATH=/opt/my-project(若要永久生效,把这句话写入~/.bashrc或~/.zshrc) - Windows:在系统环境变量中添加
JSONNET_PATH,值设为你的项目根目录路径
之后直接运行jsonnet your-target-file.libsonnet,就能用根目录路径导入文件了。
- Linux/macOS:在终端执行
注意:导入路径不要加开头的./,否则Libsonnet仍会从当前文件目录开始查找,而非--jpath指定的根目录。
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

