2011-04-23 66 views
40

我的目錄結構是這樣的:是否有需要從相對路徑文件中盧阿更好的方式

|-- ball.lua 
|-- entity.lua 
|-- test 
    `-- ball_test.lua 

我使用的測試/ ball_test.lua下面的代碼需要從ball.lua父目錄:

package.path = package.path .. ";../entity.lua" 
require("entity") 
package.path = package.path .. ";../ball.lua" 
require("ball") 

entity.lua是ball.lua的依賴項。所以我需要(「實體」),否則我得到一個模塊'entity.lua'未找到錯誤。這似乎是一個黑客,有什麼更好的方法來做到這一點?

+0

有球模塊需要entity.lua,所以你只需要'球' – 2011-04-23 11:35:36

+3

@盧卡斯 - 球確實需要entity.lua。我得到這個錯誤是因爲require在從test子目錄執行時找不到entity.lua。對不起,我沒有在我的問題中說清楚。 – 2011-04-23 12:45:06

回答

59
package.path = package.path .. ";../?.lua" 

將適用於兩者。

+7

我會切換到'package.path =「; ../?。lua」.. package.path',所以我沒有未知的模塊擊敗本地的。 – 2011-05-24 14:22:53

+19

我猜你的意思是''package.path =「../?.lua;」 .. package.path''(路徑分隔符應該移動)。否則,好主意。 – Todd 2012-04-30 04:11:29

+2

對於任何想要如何爲C擴展模塊執行此操作的人,您都需要修改'package.cpath'而不是'package.path';否則它是相同的 – wakjah 2015-09-30 13:51:32