LUAROCKS на окнах странно устанавливает камни

В Linux luarocks устанавливает камни в

/usr/local/lib/luarocks/rock

и помещает соответствующий файл lua в

/usr/local/share/lua/5.3

В Windows (LUA 5.1) камни находятся в:

C:\Program Files (x86)\LuaRocks\systree\lib\luarocks

и файлы lua находятся в:

C:\Program Files (x86)\LuaRocks\systree\share\lua\5.1

но lua не может найти их при установке Windows.

У меня должна быть проблема с PATH

Это часть моего ПУТИ:

Path=C:\Program Files (x86)\Lua\5.1\lua\;C:\Program Files (x86)\LuaRocks\2.2;C:\Program Files (x86)\LuaRocks\2.2\lua\luarocks;C:\Program Files (x86)\LuaRocks\systree\bin;C:\Perl64\site\bin;C:\UnxUpdts;C:\Perl64\bin;C:\Program Files (x86)\Lua\5.1;C:\Program Files (x86)\Lua\5.1\clibs

Я использую ZeroBraneStudio в качестве IDE, и мои системные настройки указывают этот путь

path.lua = 'C:\Program Files (x86)\Lua\5.1'

я побежал

luarocks install inspect

и это сгенерировало необходимые файлы. Затем я написал этот простой тестовый код:

require "inspect"
assert(inspect(1) == "1")
assert(inspect("Hello") == '"Hello"')

и получил эту ошибку

Program starting as '"E:\Anonamouse\ZeroBraneStudio\bin\lua.exe" -e "io.stdout:setvbuf('no')" "E:\Anonamouse\ZeroBraneStudio\myprograms\DemoInspectModule.lua"'.
Program 'lua.exe' started in 'E:\Anonamouse\ZeroBraneStudio\myprograms' (pid: 14776).
E:\Anonamouse\ZeroBraneStudio\bin\lua.exe: ...namouse\ZeroBraneStudio\myprograms\DemoInspectModule.lua:2: attempt to call global 'inspect' (a nil value)
stack traceback:
        ...namouse\ZeroBraneStudio\myprograms\DemoInspectModule.lua:2: in main chunk
        [C]: at 0x00402a57
Program completed in 0.04 seconds (pid: 14776).

Я получаю ту же ошибку, когда запускаю одно и то же простое приложение прямо в консоли (это говорит мне, что переменная PATH для lua работает)

Что мне не хватает?


person aquagremlin    schedule 30.03.2015    source источник


Ответы (1)


Судя по сообщению об ошибке, которое вы процитировали, require "inspect" работало нормально, но модуль не установил глобальную переменную inspect. В течение некоторого времени политика не устанавливала глобальные переменные внутри модулей, а вместо этого возвращала что-то (обычно таблицу модулей) из кода модуля, который, в свою очередь, передается через require. Так что, наверное, что-то вроде

local inspect = require "inspect"
assert(inspect(1) == "1")
assert(inspect("Hello") == '"Hello"')

or

local inspect = require "inspect"
assert(inspect.inspect(1) == "1")
assert(inspect.inspect("Hello") == '"Hello"')

должно сработать.

person siffiejoe    schedule 30.03.2015