说我在一个文件夹中有两个文件test.lua
和m.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
,则它将不工作。