Модуль, установленный Luarocks, не найден

Я работаю над Debian Stable Linux. Я установил модуль luafilesystem командой:

luarocks --local install luafilesystem

Однако он не найден, если в исходных файлах lua используется любое из следующего:

require ("lfs")
require ("luafilesystem")

(Хотя эти файлы работают правильно при запуске из среды IDE ZeroBraneStudio).

Из предложения в Интернете я также выполнил следующую команду:

luarocks --local install luarocks

Но это не помогает. Я проверил с помощью команды luarocks-admin, которая показала:

CONFIGURATION
    Lua version: 5.1
    Configuration files:
        System: /etc/luarocks/config.lua (ok)
        User  : /home/abcd/.luarocks/config-5.1.lua (not found)

    Rocks trees in use: 
        /home/abcd/.luarocks
        /usr/local

В настоящее время у меня установлены только эти 2 модуля:

$ luarocks list

Installed rocks:
----------------

luafilesystem
   1.7.0-2 (installed) - /home/abcd/.luarocks/lib/luarocks/rocks

luarocks
   2.4.3-1 (installed) - /home/abcd/.luarocks/lib/luarocks/rocks

Должен ли я скопировать /etc/luarocks/config.lua в /home/abcd/.luarocks для этого? Спасибо за вашу помощь.

2 ответа

Решение

LUA_PATH а также LUA_CPATH Переменные окружения управляют путями, которые ищет lua при поиске пакетов. Возможно, они установлены неправильно. Включите пути, используемые luarocks в эти переменные, запустив

eval "$(luarocks path)"

и у тебя все будет готово.

Eval отлично работает при выполнении кода с терминала, но не работает при его выполнении с помощью отладчика vscode.

Чтобы обойти эту проблему, я сделал следующее.

      local LUA_PATH = 'my LUA_PATH from "$ luarocks path"'
local LUA_CPATH = 'my LUA_CPATH from "$ luarocks path"'

package.path = package.path .. ';' .. LUA_PATH
package.cpath = package.cpath .. ';' .. LUA_CPATH

Благодаря этому изменению я могу запускать код с помощью отладчика.

Другие вопросы по тегам