LuaJit не найдет библиотеку "lua-vips", установленную через "luarocks" - PullRequest
1 голос
/ 23 июня 2019

У меня есть этот файл lua:

-- test1.lua 


--require "luarocks.loader"
vips = require "vips"
--vips = require "lua-vips"



local img = vips.Image.new_from_file("img1.jpg")
-- [...................]

Не найдет библиотеку "lua-vips", установленную через "luarocks":

$ luajit test1.lua 
luajit: error loading module 'vips' from file '/usr/local/lib/luarocks/rocks-5.3/':
  cannot read /usr/local/lib/luarocks/rocks-5.3/: Is a directory
stack traceback:
  [C]: at 0x0102caa660
  [C]: in function 'require'
  test1.lua:2: in main chunk
  [C]: at 0x0102c3b8a0

Даже после добавления

export LUA_PATH="/usr/local/lib/luarocks/rocks-5.3/"

до ~/.profile, не будет.

Содержимое каталога luarocks - lua-vips существует:

  ls /usr/local/lib/luarocks/rocks-5.3/

  lua-vips  manifest

Как это исправить?

$ luarocks path
export LUA_PATH='/Users/my_user/.luarocks/share/lua/5.3/?.lua;/Users/my_user/.luarocks/share/lua/5.3/?/init.lua;/usr/local/share/lua/5.3/?.lua;/usr/local/share/lua/5.3/?/init.lua;/usr/local/Cellar/luarocks/3.0.1/share/lua/5.3/?.lua;/usr/local/lib/lua/5.3/?.lua;/usr/local/lib/lua/5.3/?/init.lua;./?.lua;./?/init.lua'
export LUA_CPATH='/Users/my_user/.luarocks/lib/lua/5.3/?.so;/usr/local/lib/lua/5.3/?.so;/usr/local/lib/lua/5.3/loadall.so;./?.so'
export PATH='/Users/my_user/.luarocks/bin:/usr/local/bin:/Users/my_user/.yarn/bin:/Users/my_user/.config/yarn/global/node_modules/.bin:/Users/my_user/.nix-profile/bin:/Users/my_user/.nvm/versions/node/v8.14.0/bin:/Users/my_user/.cargo/bin:/Users/my_user/.gem/ruby/2.5.1/bin:/Users/my_user/.rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/bin:/Users/my_user/.rubies/ruby-2.5.1/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/my_user/go/bin'

1 Ответ

0 голосов
/ 24 июня 2019

Ваша проблема в том, что LUA_PATH не работает так, как обычно работают PATH.

Вы указываете не каталог, а строку шаблона с ?, представляющим имя библиотеки для загрузки.

Так, например, если вы хотите найти файлы в каталоге /path/to/libs/, вы должны написать "/path/to/libs/?.lua;/path/to/libs/?/init.lua" для пути.

Если вы буквально добавите "/usr/local/lib/luarocks/rocks-5.3/", Lua попытается загрузить этот каталог как файл Lua, что приведет к вашей ошибке.

Удалите эту переменную окружения и сообщите нам, какую ошибку вы получите.

Также имейте в виду, что для добавления чего-либо в .profile требуется выход из системы и повторный вход, чтобы изменения вступили в силу (или source ~/.profile в каждой новой открытой оболочке)

...