2011-04-23 6 views
40

Mi estructura de directorios es el siguiente:¿Hay una mejor manera de exigir archivo de ruta relativa en lua

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

estoy usando el siguiente código en la prueba/ball_test.lua para requerir ball.lua de la directorio principal:

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

entity.lua es una dependencia de ball.lua. Entonces requiero ("entidad") primero, de lo contrario obtengo un error de 'entidad.lua' del módulo no encontrado. Esto parece un truco, ¿cuál es una mejor manera de hacer esto?

+0

tienen módulo de bola requieren entity.lua, por lo que solo tiene que requerir'ball ' –

+3

@Lukasz - bola requiere entity.lua. Me aparece el error porque require no puede encontrar entity.lua cuando se ejecuta desde el subdirectorio de prueba. Lo siento, no lo dejé claro en mi pregunta. –

Respuesta

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

funcionará para ambos.

+7

Cambiaría esto a 'package.path ="; ../. Lua ".. package.path' así que no tengo módulos desconocidos que superen los locales. –

+19

Supongo que querías decir '' package.path = "../?.lua;" .. package.path'' (el delimitador de ruta debe moverse). De lo contrario, buena idea. – Todd

+2

+1 para cualquiera que esté buscando cómo hacer esto para los módulos de extensión C, debe modificar 'package.cpath' no' package.path'; de lo contrario, es muy parecido – wakjah

Cuestiones relacionadas