Возможно, имя файла интерпретируется относительно текущего рабочего каталога, а не каталога исходного кода. Я не знаю Lua, но это было бы нормально для большинства языков: это то, как работают стандартные API Unix (я думаю, что Windows делает то же самое), и большинство языков просто используют их. Единственный язык, который я знаю, который интерпретирует пути относительно программы, это Ant.
Таким образом, либо измените каталог на каталог проекта перед запуском программы, либо (лучше) замените относительный путь на абсолютный. Или, если есть способ узнать местоположение текущего скрипта, вы можете использовать его для создания абсолютного пути.