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

Lua 5.3 thinks socket.lua doesn't exist in a directory where it actually does exist

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

我想为开源游戏的开发做出贡献,但这个问题阻止了我这样做。

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

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

如果您对可能的原因有想法,请 post 它。

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

os.getenv (varname)

Returns the value of the process environment variable varname, or nil if the variable is not defined.

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

os.getenv("APPDATA")

Returns: 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")

"Lua does not expand environment variable references in package.path, so %APPDATA% won't work. You need the real path. The LuaRocks installation script should have said that: "请注意,上述路径中的 %APPDATA% 元素是用户特定的,必须由其实际值替换。”- siffiejoe