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

时间:2016-03-08 10:57:06

标签: lua luarocks

这是一个截图: https://drive.google.com/open?id=0B4Dqo44FM648VTVKVzBKSERldGc

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

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

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

如果您对可能的原因有所了解,请发布。

2 个答案:

答案 0 :(得分:3)

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

  

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

答案 1 :(得分:0)

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