Lua与许多语言一样,具有搜索所需模块的“路径”的概念。
它可以通过以下几种方式进行配置,但它通常是像
./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua
(你可以验证,如果你的是,通过检查一个Lua提示符下键入=package.path
不同)
默认包搜索第一采用软件包名称(在您的示例中为“axf.sf”),并用OS的目录分隔符替换每个点。 (在你的例子中是“axf/sf”,因为你在Linux上)。然后它将用转换后的软件包名称替换每个模式上的?
,并使用系统中存在的第一个模式。
所以,它会搜索
./axf/sf.lua
/usr/local/share/lua/5.1/axf/sf.lua
/usr/local/share/lua/5.1/axf/sf/init.lua
/usr/local/lib/lua/5.1/axf/sf.lua
/usr/local/lib/lua/5.1/axf/sf/init.lua
/usr/share/lua/5.1/axf/sf.lua
/usr/share/lua/5.1/axf/sf/init.lua
如果该模块的问题是一个C模块,然后它搜索package.cpath代替。 – hugomg 2013-03-14 19:52:56
还有['package.searchpath'](http://www.lua.org/manual/5.2/manual.html#pdf-package.searchpath),它可以告诉你文件的确切路径。例如。 '= package.searchpath('axf.sf',package.path)或package.searchpath('axf.sf',package.cpath)' – finnw 2013-03-15 00:42:36