【问题标题】:require a package that has a different file name in lua需要一个在 lua 中具有不同文件名的包
【发布时间】:2016-02-18 02:39:13
【问题描述】:

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

this tutorial 之后,我正在尝试将 DeepMind dqn 导入 iTorch 笔记本。

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

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

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

当我尝试做的时候

require 'dqn'

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

我看到了documentation,它暗示了文件名和包名之间的问题。

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

【问题讨论】:

  • 您看过他们在run_* 脚本中使用的train_agent.lua 示例脚本吗?你有没有试过require("NeuralQLearner"),因为你有一个包含/path/to/dqn/?.luapackage.path
  • 谢谢,现在更有意义了。我现在了解他们通过if not dqn then require 'initenv' end 所做的伎俩。我也直接尝试了require 'NeuralQLearner',我有一组新的错误,所以我认为我正在取得进展:)
  • package.path = package.path .. ";/path/to/?.lua;/path/to/?/init.lua;"试试看。

标签: lua torch


【解决方案1】:

诀窍在于:

if not dqn then
    require 'initenv'
end

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

【讨论】:

    猜你喜欢
    • 2013-03-26
    • 2021-10-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多