Почему lua require не ищет текущий каталог? - PullRequest
1 голос
/ 05 апреля 2020

скажем, у меня есть два файла test.lua и m.lua в папке, в test.lua как:

require("m")

, затем я запускаю этот файл, однако при этом возникает ошибка:

lua: /Users/xx/works/scripts/test.lua:43: module 'm' not found:
    no field package.preload['m']
    no file '/usr/local/share/lua/5.3/m.lua'
    no file '/usr/local/share/lua/5.3/m/init.lua'
    no file '/usr/local/lib/lua/5.3/m.lua'
    no file '/usr/local/lib/lua/5.3/m/init.lua'
    no file './m.lua'
    no file './m/init.lua'
    no file '/usr/local/lib/lua/5.3/m.so'
    no file '/usr/local/lib/lua/5.3/loadall.so'
    no file './m.so'

Как видите, появляется строка no file './m.lua', но это не так. ./m.lua существует, и права доступа к файлам в порядке. Если я жестко закодирую путь:

package.path = package.path..';'..'/Users/xx/works/scripts/?.lua'
require('m')

Он будет работать как положено.

Что мне нужно сделать, чтобы lua произвел поиск в текущем каталоге (например, при импорте python), когда требуется модуль

1 Ответ

2 голосов
/ 05 апреля 2020

Текущий каталог - это каталог, из которого вы запускаете lua с.

В вашем примере отсутствует командная строка, если вы использовали lua test.lua, то она должна работать, если вы использовали lua works/scripts/test.lua, то это не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...