2013-02-15 2 views
3

после загрузки модуля в Lua, я хотел бы определить, какой файл модуля ему соответствует. В Python, вы делаете это с кодом, как:Определить местоположение файла модуля

import module_name 
module_name.__file__ 

Так в Lua, если я что-то вроде

require 'math' 

, что я кладу рядом, чтобы определить, где этот модуль находится? Кстати, мне действительно не нужно место математики, но вместо этого есть некоторые другие сторонние пакеты, которые были загружены, и вы хотите знать, какая копия файлов сборки фактически используется, когда я вызываю Lua.

ответ

4

Библиотека package может предоставить вам то, что вам нужно.

Например, если у меня есть util.lua в моем Lua пути таким образом, что я могу написать:

require 'util' 

Я могу получить путь к файлу, как это:

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

Хм, я попытался это с «математикой» и получил следующий результат: «Lua 5.2.0» Copyright (C) 1994-2011 Lua.org, PUC-Rio > require 'package' > require 'math' > print (package.searchpath (' math ', package.path)) nil \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 нет файла '/usr/share/lua/5.2/math/init.lua' \t нет файла './math.lua'' Является ли это тем, ожидаемый результат? Кажется странным, что он говорит «нет файла» где-либо. – gammapoint

+0

Кроме того, извините, что выше выглядит так страшно, думаю, я не могу делать символы новой строки в комментариях ... – gammapoint

+2

@gammapoint: «math» не является нормальным пакетом. Это [пакет, который является частью Lua] (http://www.lua.org/manual/5.2/manual.html#6.6). У него нет места; он предварительно загружен. Это внутренний модуль. Попробуйте его с помощью внешнего модуля. –

Смежные вопросы