【问题标题】:Cannot execute lua code, read from file无法执行lua代码,从文件中读取
【发布时间】:2016-05-31 06:31:15
【问题描述】:

我有一些 lua 代码示例。例如:

for i=1,4 do
   print(i)
end

我需要在 Python 3.4 上使用 Lupa 库来执行它。

为此,我编写了以下代码:

import lupa
lua = lupa.LuaRuntime(unpack_returned_tuples=True)
lua.eval(open('test.lua').read())

test.lua 是我的示例 lua 文件。

但如果我尝试执行此代码,我会得到以下信息:

Traceback (most recent call last):
  File "/Job/HW-2/testing/test1.py", line 3, in <module>
    lua.eval(open('test.lua').read())
  File "lupa/_lupa.pyx", line 251, in lupa._lupa.LuaRuntime.eval (lupa/_lupa.c:4579)
  File "lupa/_lupa.pyx", line 1250, in lupa._lupa.run_lua (lupa/_lupa.c:18295)
lupa._lupa.LuaSyntaxError: error loading code: [string "<python>"]:1: unexpected symbol near 'for'

看来,这是一个非常简单的问题,但我不知道如何解决它。那么,如何使用 Lupa 在 Python 3 上执行 Lua 文件?

【问题讨论】:

    标签: python python-3.x lua embedding lupa


    【解决方案1】:

    eval 方法需要一个返回值的 Lua 表达式。为了执行 Lua 语句,请改为调用 execute

    >>> lua.execute("""for i=1,4 do
    ...    print(i)
    ... end""") 
    1
    2
    3
    4
    

    【讨论】:

    • 如果我需要打开一个文件怎么办?我有一个大型 Lua 脚本,我想使用 lupa 在 Python 中执行它
    • 从哪里获得 Lua 代码与如何执行它无关。请注意,该问题具有 open('test.lua').read() 而不是字符串文字。
    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2013-05-30
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多