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

Lua中如何相对于导入文件所在目录导入其他文件?

Lua 同目录文件跨路径导入解决方案

要实现不受执行目录影响的同目录模块导入,最简洁的标准实现方式是动态将当前脚本所在目录加入Lua的模块搜索路径:

在test.lua开头添加以下代码:

-- 获取当前脚本的绝对路径并提取目录部分
local script_path = debug.getinfo(1, "S").source:sub(2)
local script_dir = script_path:match("(.*/)") or "./"

-- 将当前脚本目录添加到模块搜索路径最前端
package.path = script_dir .. "?.lua;" .. package.path

之后保持原有的导入逻辑即可:

require("main")
print(doSomething())

原理说明

  • debug.getinfo(1, "S").source能获取当前执行脚本的路径,sub(2)用于去掉路径开头的@符号(Windows环境下脚本路径会带这个前缀)。
  • 通过match("(.*/)")提取脚本所在的目录路径,若脚本在当前目录则默认使用./。
  • 修改package.path让Lua优先从当前脚本所在目录查找.lua模块,彻底解决因工作目录不同导致的模块查找错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:50:25