Lua 5.3 认为 socket.lua 在一个它实际存在的目录中不存在

以下是截图: https://drive.google.com/open?id=0B4Dqo44FM648VTVKVzBKSERldGc

我想要开心地为一个开源游戏做贡献,但这个问题正在阻止我这样做。

我的 LuaRocks 安装配置为 Lua 5.3,并设置为使用 MinGW 的构建工具。我的操作系统是 Windows 10 64 位。

我的 Lua 5.3.2 二进制文件由 这个 网站提供(lua-5.3.2_Win64_bin.zip)。

如果您对可能的原因有想法,请发表您的见解。

点赞
用户1599009
用户1599009

你必须手动解析环境变量:

os.getenv (varname)

返回进程环境变量 varname 的值,如果变量未定义则返回 nil。

因此,在你的情况下,你需要先获取 %APPDATA% 路径:

os.getenv("APPDATA")

返回:C:\Users\USERNAME\AppData\Roaming

在搜索要加载的包时,Lua 使用预定义的文件夹列表进行搜索。该列表在 package.path 中定义,是一个分号分隔的 (;) 字符串。要添加新文件夹,必须将其路径附加到 _package.path_:

package.path = package.path .. ";" .. NEWFOLDER .. "\\?.lua"

最后,你的完整解决方案是这样的:

package.path = package.path .. ";" .. os.getenv("APPDATA") .. "\\luarocks\\share\\lua\\5.3\\?.lua"
local s = require("socket")
2016-03-08 15:52:40
用户88888888
用户88888888

"Lua在package.path中不会展开环境变量引用,因此%APPDATA%无法工作。您需要使用真实的路径。LuaRocks安装脚本应该已经说明了这一点:“请注意,上面路径中的%APPDATA%元素是特定于用户的,必须替换为其实际值。”- siffiejoe"

2016-03-09 11:52:06