需要 lua 中具有不同文件名的包

require a package that has a different file name in lua

我对Lua很陌生,所以请原谅我的弱智问题。

关注 this tutorial 我正在尝试将 DeepMind dqn 导入 iTorch notebook。

我已经克隆了 this repo,其中包含一个名为 dqn 的文件夹,其中包含源代码。

我已经添加了 dqn 文件夹的路径

package.path = package.path .. ";/path/to/dqn/?.lua"

当我尝试做

require 'dqn'

我收到一个(预期的)错误,因为文件夹中没有名为 dqn.lua 的文件。实际上,此类模块的源代码包含在文件 NeuralQLearner.lua 中。

我看到 documentation 提示文件和包名称之间存在问题。

所以我的问题是:我怎样才能正确导入这个模块?我怎样才能让 Lua 知道 dqn 它实际上应该寻找 NeuralQLearner.lua (我猜没有硬编码到路径中)?

诀窍在于:

if not dqn then
    require 'initenv'
end

放入每个文件。 initenv 文件将定义 dqn 的含义。一旦 initenv 的路径是 package.path,这似乎是克服限制的好技巧。