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