Lua的`require`可以处理包含隐藏目录/句号的路径吗?

时间:2012-08-10 12:11:21

标签: path lua

在Linux下,使用Lua 5.1,我有一个位于隐藏目录下的lua脚本:~/.texmf/lua/print_table.lua。 (这是与LuaTeX相关的,这就是为什么它在texmf目录中。)我从我的主目录以交互方式运行lua,尝试require该文件,并收到以下错误消息:

> require('.texmf/lua/print_table')
stdin:1: module '..texmf/lua/print_table' not found:
    no field package.preload['.texmf/lua/print_table']
    no file './/texmf/lua/print_table.lua'
    ... [file not found in other - irrelevant - trees, either, of course]

> require('/home/me/.texmf/lua/print_table')
stdin:1: module '/home/me/.texmf/lua/print_table' not found:
    no field package.preload['/home/me/.texmf/lua/print_table']
    no file './/home/me//texmf/lua/print_table.lua'
    ...

所以,显然require将句点变成斜杠。逃避这段时间不起作用:我尝试将时间加倍,在它前面贴上反斜杠,并在前面贴上两个反斜杠。有没有办法require一个文件在其路径中有一个隐藏目录(或任何其他句号)?

2 个答案:

答案 0 :(得分:4)

您可以使用loadfile代替require;这样,您可以指定直接路径。最近有一个问题......

答案 1 :(得分:3)

require需要模块名称,而不是路径

您可能希望将/home/me/.texmf/lua/?.lua添加到package.pathLUA_PATH。然后你就可以说require "print_table"