如何向Pluto Notebook传递命令行参数?
在Pluto笔记本中传递命令行参数的实现方法
当你尝试通过julia -e "using Pluto; Pluto.run(notebook=\"example.jl\")" there启动Pluto笔记本时,命令行参数无法自动填充到笔记本内的ARGS变量中,以下是两种可行的解决方式:
方法一:通过环境变量传递(兼容性强)
启动时将参数存入环境变量:
ARGS="there" julia -e 'using Pluto; Pluto.run(notebook="example.jl")'
在Pluto笔记本中,判断当前环境并读取环境变量赋值给ARGS:
# example.jl # 检测是否处于Pluto运行环境 if isdefined(Main, :PlutoRunner) global ARGS = split(get(ENV, "ARGS", "")) end println("Hello $(ARGS[1])")
这种方式同时兼容脚本直接运行(julia example.jl there)和Pluto启动两种场景。
方法二:通过Pluto启动回调注入参数(更直接)
修改启动命令,利用on_load回调将命令行参数注入笔记本的全局环境:
julia -e ' using Pluto # 获取启动命令后的参数 input_args = ARGS # 启动笔记本并注入参数 Pluto.run( notebook="example.jl", on_load=notebook -> begin notebook.eval(Meta.parse("ARGS = $(repr(input_args))")) end )' there
笔记本内无需额外修改,直接使用ARGS即可:
# example.jl println("Hello $(ARGS[1])")
注意:该方法依赖Pluto的内部API,未来版本可能存在变更风险。
内容的提问来源于stack exchange,提问作者Damien
相关产品推荐
相关产品推荐

