2013-02-15 64 views
3

在Lua中加载模块后,我想确定它对应的模块文件。在Python中,这样做有如下代码:确定模块文件的位置

import module_name 
module_name.__file__ 

所以在Lua,如果我这样做

require 'math' 

我该怎么把旁边,以确定该模块在什么位置?顺便说一句,我实际上并不需要数学的位置,而是有一些其他的第三方软件包被下载,并且想要知道当我调用Lua时实际使用的构建文件的副本。

回答

4

package库可能会给你你需要的东西。

举例来说,如果我在我的Lua路径有util.lua,这样我可以写:

require 'util' 

我能得到的路径,像这样的文件:

print(package.searchpath('util', package.path)) 
+0

嗯,我想这与'数学',并得到了以下结果:“Lua 5.2.0版权所有(C)1994-2011 Lua.org,PUC-Rio >要求'包' >要求'数学' > print(package.searchpath('数学',package.path)) 无\t \t没有文件 '/usr/local/share/lua/5.2/math.lua' \t没有文件 '/usr/local/share/lua/5.2/math/init.lua' \t没有文件“的/ usr /local/lib/lua/5.2/math.lua ' \t没有文件 '/usr/local/lib/lua/5.2/math/init.lua' \t没有文件' ./math.lua” \t没有文件'/usr/share/lua/5.2/math.lua' \t no file'/usr/share/lua/5.2/math/init.lua' \t no file'。/ math.lua'' 那是预期结果?似乎很奇怪,它说“没有文件”在任何地方。 – gammapoint 2013-02-15 23:20:25

+0

此外,对不起,上述看起来如此可怕,猜测我不能在评论中做新行... – gammapoint 2013-02-15 23:23:54

+2

@gammapoint:'数学'不是一个普通的包。这是[Lua的一部分](http://www.lua.org/manual/5.2/manual.html#6.6)。它没有位置;它已预先加载。这是一个内部模块。试用一个外部模块。 – 2013-02-16 01:26:52