0

我正在尝试从 Java 中的 Torch 运行神经网络。我正在使用 luaj 作为包装器。

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

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

在我需要任何模块之前,我将package.cpathand设置package.path为库所在的文件夹,因为之前它只查看默认路径,即项目文件夹。但是我觉得'require'只在package.path中查找模块而不是在cpath中,因为那样它也会找到libpaths.so。还因为此输出仅包括 path 中的目录而不包括 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。

4

1 回答 1

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

于 2016-02-23T20:20:51.047 回答