2012-08-10 98 views
2

在Linux下,使用Lua 5.1,我有一個位於隱藏目錄下的lua腳本:~/.texmf/lua/print_table.lua。 (它的LuaTEX等程序相關的,這就是爲什麼它在TEXMF目錄)。我跑lua交互從我的主目錄,試圖require該文件,得到了以下錯誤消息:可以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文件的路徑中有一個隱藏的目錄(或任何其他句點)?

回答

3

require需要模塊名稱,不是路徑

您可能需要將/home/me/.texmf/lua/?.lua添加到package.pathLUA_PATH。然後你就可以說require "print_table"

4

您可以使用loadfile而不是require;這樣,你可以指定直接路徑。有一個關於它的問題,最近...

+1

http://stackoverflow.com/questions/11868847/lua-require-function-on-a-full-path-name – lhf 2012-08-10 12:44:25

+0

啊,我搜索了「隱藏目錄」而不是「完整路徑」。所以'loadfile'接受一個路徑,'require'只接受一個以點或斜線分隔的模塊名,並以一種有點通俗的方式對待它。現在都清楚了。謝謝,Bartek和lhf。 – Esteis 2012-08-10 13:06:36

相關問題