#lua #environment-variables
#lua #переменные среды
Вопрос:
Может ли кто-нибудь перечислить шаги, которые мне нужно предпринять, чтобы поместить файл lua (theclass.lua) куда-нибудь в мою систему, чтобы я мог это сделать:
require 'theclass'
и компилятор найдет ее без необходимости копировать класс в каждый каталог?
Ответ №1:
Список мест, куда вы можете ее поместить, является частью, если вы получаете сообщение об ошибке:
~ e$ lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require 'theclass'
stdin:1: module 'theclass' not found:
no field package.preload['theclass']
no file './theclass.lua'
no file '/usr/local/share/lua/5.1/theclass.lua'
no file '/usr/local/share/lua/5.1/theclass/init.lua'
no file '/usr/local/lib/lua/5.1/theclass.lua'
no file '/usr/local/lib/lua/5.1/theclass/init.lua'
no file './theclass.so'
no file '/usr/local/lib/lua/5.1/theclass.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
[C]: in function 'require'
stdin:1: in main chunk
[C]: ?
>
Lua запрашивает список каталогов для поиска по крайней мере в трех местах:
C LUA_PATH
в заголовке конфигурации
Глобальный Lua LUA_PATH
Переменная среды LUA_PATH
Смотрите PiL
Комментарии:
1. На самом деле Lua использует
package.path
значение по умолчанию, полученное из переменной окруженияLUA_PATH
, если оно установлено. Lua никогда не просматривает глобальную переменнуюLUA_PATH
.2. О, страница 1 в lua.org/pil/8.1.html должно быть, устарело: «Чтобы определить ее путь, require сначала проверяет глобальную переменную LUA_PATH». Я вижу, это исправлено в разделе 15.1 моей бумажной копии PiL 2. Спасибо, Луис!
3. Онлайн-версия PiL предназначена для Lua 5.0, в которой использовалась глобальная переменная
LUA_PATH
. Сравните lua.org/source/5.0/src_lib_lbaselib.c.html#getpath с lua.org/source/5.1/loadlib.c.html#setpath .