You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elixir的.exs文件中调用另一个.exs文件(优先用Mix模块)

不用System.cmd,用Mix模块实现脚本调用的方案

嘿,要实现你想要的需求——不用System.cmd,靠Mix模块让second.exs调用执行first.exs,其实直接用Mix内置的任务函数就能搞定,这正是mix run命令底层运行的逻辑。

具体代码调整

  • first.exs完全不用改,保持原样:
IO.puts "first"
  • second.exs修改成这样:
IO.puts "second"
# 调用Mix的run任务执行first.exs脚本
Mix.Tasks.Run.run(["first.exs"])

运行效果

当你在项目根目录执行mix run second.exs时,输出会是:

second
first

(如果想要和你预期的输出顺序一致,只需要把Mix.Tasks.Run.run这行放到IO.puts "second"之前就行~)

为什么这个方法靠谱?

Mix.Tasks.Run.run/1是Mix官方提供的内置任务函数,它接收脚本路径列表作为参数,会直接在当前Elixir虚拟机进程里加载并执行指定的.exs脚本,不需要启动新的外部进程,比System.cmd更高效,也完全符合你优先用Mix模块的要求。

小提示

  • 一定要在有mix.exs的项目根目录下运行命令,因为Mix任务依赖项目环境的初始化;
  • 如果你的脚本不在根目录,传入相对路径或者绝对路径就行,比如Mix.Tasks.Run.run(["lib/utils/first.exs"])。

内容的提问来源于stack exchange,提问作者Sam Houston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:18:38