You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua 5.3运行LGI代码报错:找不到lgi.corelgilua51模块求助

问题:LGI安装后缺失lgi.corelgilua51模块(Lua 5.3环境)

问题复现

测试Lua代码

local lgi = require("lgi")
local Gdk = lgi.Gdk
local Gtk = lgi.Gtk

Gtk.init()

-- Create a new window
local window = Gtk.Window({
    title = "LGI Test Window",
    default_width = 300,
    default_height = 200,
    on_destroy = Gtk.main_quit,
})

-- Create a label and add it to the window
local label = Gtk.Label({ label = "Hello, LGI!" })
window:add(label)
window:show_all()
Gtk.main()

执行错误信息

lua: /home/username/.luarocks/share/lua/5.3/lgi/core.lua:14: module 'lgi.corelgilua51' not found:
    no field package.preload['lgi.corelgilua51']
    no file '/home/username/.luarocks/share/lua/5.3/lgi/corelgilua51.lua'
    no file '/home/username/.luarocks/share/lua/5.3/lgi/corelgilua51/init.lua'
    no file '/usr/local/share/lua/5.3/lgi/corelgilua51.lua'
    no file '/usr/local/share/lua/5.3/lgi/corelgilua51/init.lua'
    no file '/usr/local/lib/lua/5.3/lgi/corelgilua51.lua'
    no file '/usr/local/lib/lua/5.3/lgi/corelgilua51/init.lua'
    no file './lgi/corelgilua51.lua'
    no file './lgi/corelgilua51/init.lua'
    no file '/home/username/.luarocks/lib/lua/5.3/lgi/corelgilua51.so'
    no file '/usr/local/lib/lua/5.3/lgi/corelgilua51.so'
    no file '/usr/local/lib/lua/5.3/loadall.so'
    no file './lgi/corelgilua51.so'
    no file '/home/username/.luarocks/lib/lua/5.3/lgi.so'
    no file '/usr/local/lib/lua/5.3/lgi.so'
    no file '/usr/local/lib/lua/5.3/loadall.so'
    no file './lgi.so'
stack traceback:
    [C]: in function 'require'
    /home/username/.luarocks/share/lua/5.3/lgi/core.lua:14: in main chunk
    [C]: in function 'require'
    /home/username/.luarocks/share/lua/5.3/lgi/init.lua:19: in main chunk
    [C]: in function 'require'
    /home/username/.luarocks/share/lua/5.3/lgi.lua:19: in main chunk
    [C]: in function 'require'
    init2.lua:1: in main chunk

LGI安装目录文件列表

drwxr-xr-x. 1 username username   226 Nov 15 13:01 .
drwxr-xr-x. 1 username username    30 Nov 15 13:05 ..
-rw-r--r--. 1 username username 15928 Nov 15 13:01 class.lua
-rw-r--r--. 1 username username 11130 Nov 15 13:01 component.lua
-rw-r--r--. 1 username username   761 Nov 15 13:01 core.lua
-rw-r--r--. 1 username username  3319 Nov 15 13:01 enum.lua
-rw-r--r--. 1 username username  5939 Nov 15 13:01 ffi.lua
-rw-r--r--. 1 username username  3403 Nov 15 13:01 init.lua
-rw-r--r--. 1 username username  1090 Nov 15 13:01 log.lua
-rw-r--r--. 1 username username  6217 Nov 15 13:01 namespace.lua
drwxr-xr-x. 1 username username   524 Nov 15 13:01 override
-rw-r--r--. 1 username username  1591 Nov 15 13:01 package.lua
-rw-r--r--. 1 username username  7088 Nov 15 13:01 record.lua
-rw-r--r--. 1 username username    15 Nov 15 13:01 version.lua

原因分析

  • lgi.corelgiluaXX是LGI的二进制核心扩展模块,XX对应Lua的版本号(如51对应Lua5.1,53对应Lua5.3)。缺失该模块的核心原因是:安装过程中未正确编译生成适配Lua5.3的二进制模块,或是luarocks使用了错误的Lua环境进行编译。
  • 部分LGI版本的代码中可能仍在尝试加载Lua5.1命名的模块,但实际Lua5.3环境需要的是对应53版本的模块文件。

解决方法

方法1:重新编译安装适配Lua5.3的LGI

  1. 卸载现有LGI:
luarocks remove lgi
  1. 安装系统依赖(根据发行版选择):
    • Debian/Ubuntu:
      sudo apt install lua5.3-dev libgtk-3-dev libgirepository1.0-dev
      
    • RHEL/CentOS:
      sudo dnf install lua-devel gtk3-devel gobject-introspection-devel
      
  2. 指定Lua版本重新安装LGI:
luarocks install lgi --lua-version=5.3

方法2:手动创建软链接适配模块名

如果重新安装后,在/home/username/.luarocks/lib/lua/5.3/lgi/目录下存在corelgilua53.so但找不到corelgilua51.so,可以手动创建软链接:

cd /home/username/.luarocks/lib/lua/5.3/lgi/
ln -s corelgilua53.so corelgilua51.so

方法3:确认LUA_CPATH配置

确保LUA_CPATH包含luarocks的二进制模块路径:

  1. 检查当前配置:
echo $LUA_CPATH
  1. 如果缺少对应路径,添加到环境变量:
export LUA_CPATH="$HOME/.luarocks/lib/lua/5.3/?.so;$LUA_CPATH"

可以将该命令添加到~/.bashrc或~/.profile中实现永久生效

内容的提问来源于stack exchange,提问作者Bhaumik Tripathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:54:56