Require не находит общие библиотеки
Я пытаюсь запустить нейронную сеть из факела внутри Java. Я использую luaj как обертку.
Проблема в том, что когда мне требуется, например, torch
модуль, который зависит от libpaths
Модуль, который является общей библиотекой, выдает следующую ошибку:
module 'libpaths' not found: libpaths
no field package.preload['libpaths']
libpaths.lua
Прежде чем мне потребуется какой-либо модуль, я установил package.cpath
а также package.path
к папкам, в которых находятся библиотеки, потому что раньше он смотрел только в пути по умолчанию, который был просто папкой проекта. Однако у меня есть ощущение, что 'require' ищет только в package.path для модулей, а не в cpath, потому что тогда он также найдет libpaths.so. Кроме того, потому что этот вывод включает в себя только каталоги из пути, а не cpath:
/home/erika/.luarocks/share/lua/5.1/libpaths.lua
/home/erika/.luarocks/share/lua/5.1/libpaths/init.lua
/home/erika/torch/install/share/lua/5.1/libpaths.lua
/home/erika/torch/install/share/lua/5.1/libpaths/init.lua
./libpaths.lua
/home/erika/torch/install/share/luajit-2.1.0-beta1/libpaths.lua
/usr/local/share/lua/5.1/libpaths.lua
/usr/local/share/lua/5.1/libpaths/init.lua
Я попробовал package.searchpath() с путем от cpath и 'libpath', и он нашел libpaths.so. Я пробовал много разных вещей, но ничего не помогло, поэтому я был бы очень признателен за помощь!
Я использую Lua 5.1.5, моя ОС - Ubuntu 14.04 LTS.
1 ответ
Когда вы используете luarocks для локальной установки пакетов, вы должны настроить свою среду перед запуском lua/luajit/torch. Самый простой способ - выполнить вывод luarocks-5.1 path
$ luarocks-5.1 path
export LUA_PATH='/home/markus/.luarocks/share/lua/5.1/?.lua;/home/markus/.luarocks/share/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua;./?.lua;/usr/lib/lua/5.1/?.lua;/usr/lib/lua/5.1/?/init.lua'
export LUA_CPATH='/home/markus/.luarocks/lib/lua/5.1/?.so;/usr/lib/lua/5.1/?.so;./?.so;/usr/lib/lua/5.1/loadall.so'
Более удобным способом является вывод результатов в ваш ~/.bashrc
$ luarocks-5.1 path >> ~/.bashrc
Чтобы перезагрузить ваш ~/.bashrc
без выхода из системы и входа в систему, сделать source ~/.bashrc