要求找不到共享库

时间:2016-02-22 19:33:48

标签: lua torch luaj

我试图在Java内部使用火炬运行神经网络。我使用luaj作为包装器。

问题在于,当我需要例如依赖于作为共享库的torch模块的libpaths模块时,它会抛出以下错误:

module 'libpaths' not found: libpaths
no field package.preload['libpaths']
libpaths.lua

在我需要任何模块之前,我将package.cpathpackage.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。

1 个答案:

答案 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