gpt4 book ai didi

Lua:require找不到子模块,但searchpath成功?

转载 作者:行者123 更新时间:2023-12-02 22:00:07 26 4
gpt4 key购买 nike

通常,当我对与远程软件相关的问题有疑问时,我发现其他人已经问过同样的问题,并且得到了对我也有用的良好答案。

但这一次,我没能找到解决困境的答案。

我们开始吧:我目前正在尝试将我的 Lua 编程水平提升一到三级,并且想要使用模块。所以,我有这样的结构:

main.lua
foo/bar.lua

现在,在 main.lua 中我这样做

require("foo.bar")

失败了,

main.lua:1 module 'foo.bar' not found:
no field package.preload['foo.bar']
no file 'foo.bar.lua'
no file 'foo.bar.lua'
no file 'foo.lua'

好吧,我的 package.path 可能有问题,所以我使用 package.searchpath("foo.bar", package.path) 来查看我的内容,做错了。

问题是 package.searchpathfoo.bar 解析为 foo/bar.lua ,这是完全正确的。

据我了解,package.searchpath 尝试以与 require 相同的方式查找模块,但在我的情况下似乎存在一些故障。

令我感到奇怪的是错误输出中重复出现no file 'foo.bar.lua'

我是否误解了 require 的用法?

我正在使用 LuaJIT-2.0.0 来运行我的 block

<小时/>

更新:

我正在使用 LuaJIT-2.0.0 来运行我的 block <- 这是我的问题的原因,库存 Lua-5.2.2 的行为符合预期

最佳答案

package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."?.lua;".. package.path
require("foo.bar")

This line causes require to look in the same directory as the current file when asked to load other files. If you want it to instead search a directory relative to the current directory, insert the relative path between " and ?.lua

以下是需求描述的一部分:

[...] Otherwise require searches for a Lua loader using the path stored in package.path. If that also fails, it searches for a C loader using the path stored in package.cpath. If that also fails, it tries an all-in-one loader (see package.loaders).

package.path 的默认路径始终是执行指定脚本的 .exe。

关于Lua:require找不到子模块,但searchpath成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18125775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com