【问题标题】:Lua require doesn't work on directoriesLua require 不适用于目录
【发布时间】:2023-04-07 12:19:01
【问题描述】:

我的 lua 教授给了我一些任务框架代码。该代码有几个将包添加到当前目录的 require 语句。我遇到的问题是其中许多 require 语句不需要 .lua 文件,它们需要一个包含许多 lua 文件的目录。例如,我有一个目录 qtwidget,其中有一个文件:init.lua

在骨架代码中,这个包是这样引用的:

local w = qtwidget.newwindow(width,height,"Energy surface")

所以这一切都很好,但当我运行骨架代码时,我收到以下错误:

dofile('/data/mar608/BigData/src/optim/demo2.lua')
error loading module 'qttorch' from file '/usr/local/pkg/torch/share/torch/lua/qttorch':
cannot read /usr/local/pkg/torch/share/torch/lua/qttorch: Is a directory
stack traceback:
[C]: ?
[C]: in function 'require'
/data/me/BigData/src/optim/demo2.lua:36: in main chunk
[C]: in function 'dofile'
[string "dofile('/data/mar608/BigData/src/optim/demo..."]:1: in main chunk
[C]: ?

发生了什么事?为什么lua不理解这个require语句?有什么方法需要我的 package.path 变量来解决这个问题吗?我需要能够为许多目录执行此操作(即指定目录名称并让 lua 将其所有文件加载到一个名称中以供稍后引用)

【问题讨论】:

    标签: lua


    【解决方案1】:

    1) 你有/usr/local/pkg/torch/share/torch/lua/qttorch/init.lua 吗?
    2) package.path 中有 .../?/init.lua 条目吗?
    示例:/usr/local/share/lua/5.2/?.lua;/usr/local/share/lua/5.2/?/init.lua;/usr/local/lib/lua/5.2/?.lua;/usr/local/lib/lua/5.2/?/init.lua;./?.lua。

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 2016-06-24
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多