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

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