我试图在Java内部使用火炬运行神经网络。我使用luaj作为包装器。
问题在于,当我需要例如依赖于作为共享库的torch
模块的libpaths
模块时,它会抛出以下错误:
module 'libpaths' not found: libpaths
no field package.preload['libpaths']
libpaths.lua
在我需要任何模块之前,我将package.cpath
和package.path
设置为库所在的文件夹,因为它之前只查看了默认路径,它只是项目文件夹。但是我觉得“需要'只查看模块的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
我尝试使用cpath和' libpath'中的路径来使用package.searchpath()。它确实找到了libpaths.so。我尝试了很多不同的东西,但似乎没有任何工作,所以我真的很感激一些帮助!
我使用的是Lua 5.1.5,我的操作系统是Ubuntu 14.04 LTS。
答案 0 :(得分:2)
当您使用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