1

说我有两个文件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的导入)

4

1 回答 1

2

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

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

于 2020-04-05T11:00:25.020 回答