Require无法找到共享库

我正试图在Java中运行一个torch的神经网络。我使用luaj作为包装器。

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

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

在我要求任何模块之前,我将package.cpathpackage.path设置为库所在的文件夹,因为在之前,它只会查找默认路径,即项目文件夹,但是我有一种感觉,'require'只会在包路径中查找模块,而不是在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'的路径进行包.searchpath(),并且确实找到了libpaths.so。我尝试了许多不同的方法,但似乎没有什么起作用,所以我真的很感激一些帮助!

我使用Lua 5.1.5,我的操作系统是Ubuntu 14.04 LTS。

点赞
用户2779972
用户2779972

当你使用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

如果你不想注销和重新登录,可以通过source ~/.bashrc重新载入你的~/.bashrc

2016-02-23 20:20:51