为什么 lua require 不会搜索当前目录?
Why lua require won't search current directory?
假设我在一个文件夹中有两个文件 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
那么它就不会工作。
假设我在一个文件夹中有两个文件 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
那么它就不会工作。