Lua的`require`能够处理包含隐藏目录/点号的路径吗?

在 Linux 上,使用 Lua 5.1,在一个隐藏目录 ~/.texmf/lua/print_table.lua 下有一个 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 一个在路径中有隐藏目录(或任何其他句点)的文件?

点赞
用户752976
用户752976

你可以使用 loadfile 而不是 require;这样,你可以指定直接路径。最近有一个关于此的问题...

2012-08-10 12:26:02
用户107090
用户107090

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

你可以将 /home/me/.texmf/lua/?.lua 添加到 package.path 或者 LUA_PATH 中。接着就可以使用 require "print_table" 了。

2012-08-10 13:08:55