2011-04-23 8 views
40

Moja struktura katalogów wygląda następująco:Czy istnieje lepszy sposób, aby wymagać plik ze ścieżką względną w Lua

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

używam następujący kod w testowym/ball_test.lua wymagać ball.lua przeprowadzoną nadrzędny katalog:

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

entity.lua jest uzależnieniem od ball.lua. Tak więc wymagam ("entity") najpierw inaczej otrzymuję moduł "entity.lua" nie znaleziono błąd. To wygląda na włamanie, jaki jest lepszy sposób na zrobienie tego?

+0

mają moduł kulowy wymagający entity.lua, więc po prostu trzeba "piłki" –

+3

@ Łukasz - piłka wymaga entity.lua. Otrzymuję błąd, ponieważ require nie może znaleźć entity.lua, gdy jest wykonywany z podkatalogu testowego. Przepraszam, że nie wyjaśniłem tego w moim pytaniu. –

Odpowiedz

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

będzie działać dla obu.

+7

Przełączę to na 'pakiet.path ="; ../? Lua ".. pakiet.path', więc nie mam nieznanych modułów pokonujących lokalne. –

+19

Zgaduję, że chodziło o '' package.path = "../?.lua;" .. package.path'' (ogranicznik ścieżki powinien zostać przeniesiony). W przeciwnym razie dobry pomysł. – Todd

+2

+1 dla każdego, kto szuka jak to zrobić dla modułów rozszerzeń C, musisz zmodyfikować 'package.cpath', a nie' package.path'; inaczej jest tak samo – wakjah

Powiązane problemy