2011-04-23 26 views
40

cấu trúc thư mục của tôi trông như thế này:Có cách nào tốt hơn để yêu cầu tập tin từ đường dẫn tương đối trong lua

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

Tôi đang sử dụng đoạn mã sau vào thử nghiệm/ball_test.lua yêu cầu ball.lua từ thư mục chính:

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

entity.lua là phụ thuộc của ball.lua. Vì vậy, tôi yêu cầu ("thực thể") đầu tiên nếu không tôi nhận được một module 'entity.lua' không tìm thấy lỗi. Điều này có vẻ như một hack, cách tốt nhất để làm điều này là gì?

+0

có mô-đun bóng yêu cầu entity.lua, vì vậy bạn chỉ cần require'ball ' –

+3

@Lukasz - bóng không yêu cầu entity.lua. Tôi nhận được lỗi vì yêu cầu không thể tìm thấy entity.lua khi nó được thực thi từ thư mục con kiểm tra. Xin lỗi tôi đã không làm cho rõ ràng trong câu hỏi của tôi. –

Trả lời

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

sẽ hoạt động cho cả hai.

+7

Tôi sẽ chuyển đổi xung quanh thành 'package.path ="; ../ ?. lua ".. package.path' vì vậy tôi không có mô-đun không xác định nào đánh bại các địa phương. –

+19

Tôi đoán bạn có nghĩa là '' package.path = "../?.lua;" .. package.path'' (dấu phân tách đường dẫn nên được di chuyển). Nếu không, ý tưởng hay. – Todd

+2

+1 cho bất kỳ ai tìm kiếm cách thực hiện việc này cho các mô-đun mở rộng C, bạn cần sửa đổi 'package.cpath' không phải' package.path'; bằng không nó cũng giống nhau – wakjah

Các vấn đề liên quan