Lua package.path详解:模块搜索路径的秘密
package.path是一个全局变量,用于指定Lua模块的搜索路径。它是一个字符串,包含一系列用分号分隔的路径。\n\nLua在加载模块时,会根据package.path中的路径依次搜索模块文件。如果找到了对应的文件,则加载并执行该文件作为模块。如果没有找到对应文件,则会报错。\n\npackage.path的默认值是由Lua安装目录下的luaconf.h文件定义的。在该文件中,定义了一个宏LUA_PATH_DEFAULT,用于指定默认的package.path值。\n\n用户可以通过修改package.path的值来自定义Lua模块的搜索路径。可以通过在Lua代码中直接修改package.path的方式来临时改变搜索路径,也可以通过在系统环境变量中设置LUA_PATH来永久改变搜索路径。\n\npackage.path的格式是一系列的路径模式,用于匹配模块文件。路径模式可以包含包含特殊字符,如"?"和"",它们分别表示一个任意字符和任意字符串。\n\n在搜索路径中,可以使用自定义的路径模式来匹配模块文件。当Lua加载模块时,会根据路径模式来匹配符合条件的文件。如果找到了多个符合条件的文件,Lua会按照路径的顺序选择第一个文件进行加载。\n\n例如,package.path = "/usr/local/lua/?.lua;/usr/local/lua/?/init.lua",表示搜索路径为"/usr/local/lua/"和"/usr/local/lua/?/init.lua"。其中,"?"表示任意字符,""表示任意字符串。当Lua加载模块时,会根据这两个路径模式匹配符合条件的文件。\n\n需要注意的是,package.path中的路径是以分号分隔的。在Windows系统上,路径之间使用分号分隔;在Unix-like系统上,路径之间使用冒号分隔。这是因为不同系统的路径分隔符不同。
原文地址: https://www.cveoy.top/t/topic/qgDQ 著作权归作者所有。请勿转载和采集!