требуется пакет с другим именем файла в lua

Я очень новичок в Lua, так что извините за запоздалый вопрос.

Следуя этому руководству, я пытаюсь импортировать DeepMind dqn в блокнот iTorch.

Я клонировал этот репозиторий, который содержит папку с именем dqn, в которой находится исходный код.

Я добавил путь к папке dqn

package.path = package.path .. ";/path/to/dqn/?.lua"

Когда я пытаюсь сделать

require 'dqn'

Я получаю (ожидаемую) ошибку, так как в папке нет файла с именем dqn.lua. Исходный код такого модуля фактически содержится в файле NeuralQLearner.lua.

Я видел документацию, которая намекает на проблему между именем файла и пакетом.

Итак, мой вопрос: как я могу правильно импортировать этот модуль? Как я могу сообщить Lua, что dqn он действительно должен искать NeuralQLearner.lua (без жесткого кодирования пути, я думаю)?


person meto    schedule 16.11.2015    source источник
comment
Вы смотрели пример сценария train_agent.lua, который они используют в сценариях run_*? Вы пробовали require("NeuralQLearner"), так как у вас есть package.path, который содержит /path/to/dqn/?.lua?   -  person Etan Reisner    schedule 17.11.2015
comment
Спасибо, теперь это имеет больше смысла. Теперь я понимаю трюк, который они делают через if not dqn then require 'initenv' end. Я также попробовал напрямую require 'NeuralQLearner', и у меня появился новый набор ошибок, так что я думаю, что делаю успехи :)   -  person meto    schedule 17.11.2015
comment
package.path = package.path .. ;/путь/к/?.lua;/путь/к/?/init.lua; Попробуй это.   -  person smhx    schedule 17.11.2015


Ответы (1)


Хитрость заключается в:

if not dqn then
    require 'initenv'
end

вставить в каждый файл. Затем файл initenv определит, что должен означать dqn. Когда путь к initenv равен package.path, это кажется хорошим трюком для преодоления ограничения.

person meto    schedule 09.12.2015