为什么 lua require 不会搜索当前目录?

Why lua require won't search current directory?

假设我在一个文件夹中有两个文件 test.luam.lua,在 test.lua 中为:

require("m")

然后我 运行 这个文件,但是它引发了一个错误:

lua: /Users/xx/works/scripts/test.lua:43: module 'm' not found:
    no field package.preload['m']
    no file '/usr/local/share/lua/5.3/m.lua'
    no file '/usr/local/share/lua/5.3/m/init.lua'
    no file '/usr/local/lib/lua/5.3/m.lua'
    no file '/usr/local/lib/lua/5.3/m/init.lua'
    no file './m.lua'
    no file './m/init.lua'
    no file '/usr/local/lib/lua/5.3/m.so'
    no file '/usr/local/lib/lua/5.3/loadall.so'
    no file './m.so'

如您所见,出现了 no file './m.lua' 行,但事实并非如此。 ./m.lua 存在,并且文件权限内容正常。如果我硬编码路径:

package.path = package.path..';'..'/Users/xx/works/scripts/?.lua'
require('m')

它将按预期工作。

当需要模块

时,我应该怎么做才能让lua首先搜索当前目录(如python的导入)

当前目录是您启动 lua 的目录。

您的示例中缺少命令行,如果您使用 lua test.lua 那么它应该可以工作,如果您使用 lua works/scripts/test.lua 那么它就不会工作。