0

这是截图: 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) 提供。

如果您对可能的原因有任何想法,请发布。

4

2 回答 2

3

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

os.getenv(变量名)

返回进程环境变量 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-08T15:52:40.853 回答
0

“Lua不会扩展package.path中的环境变量引用,所以%APPDATA%不起作用。你需要真实的路径。LuaRocks的安装脚本应该说:”注意上面路径中的%APPDATA%元素是用户特定的,它必须被它的实际值替换。” - siffiejoe

于 2016-03-09T11:52:06.480 回答