在Lua中实现外部源代码块

时间:2016-08-20 03:18:05

标签: python lua

我正在寻找一个Lua脚本并让它也从Python源代码执行一些东西,好像它是这样的:

#!/bin/lua

-- begin lua part
print "Hello"

-- begin python part

Somehow_Executes_Python {
print "Hello" #In python, of course
}

-- End Script

明白了吗? 我不确定它是否可能,但如果我能以某种方式在受控块中实现外源代码,那就太棒了。我已经看到了从不同的文件/链接/源中调用它们的其他事情,但我希望它能直接从lua源代码内部工作,而不是完全来自不同的文件。

2 个答案:

答案 0 :(得分:2)

最简单的方法就是这样:

#!/usr/bin/env lua

local python = function(code)
  local file = assert(io.popen('python', 'w'))
  file:write(code)
  file:close()
end

-- begin lua part
print "Hello from Lua"

--begin python part

python [=[
print "Hello from Python"
]=]

-- End Script

逐行解释(没有代码突出显示,似乎它在SO上被破坏了):

#!/usr/bin/env lua
-- The above is a more sure-fire way to run Lua on linux from a shebang

-- This function runs python code as follows
local python = function(code)
  -- It opens a write pipe to the python executable
  local file = assert(io.popen('python', 'w'))
  -- pipes the code there
  file:write(code)
  -- and closes the file
  file:close()
  -- This is an equivalent of running
  -- $ python <code.py
  -- in the shell.
end

-- Begin Lua part
-- I added "from Lua" to better see in the output what works or not.
print "Hello from Lua"

-- Begin Python part
-- We're calling our python code running function, 
-- passing Lua long string to it. This is equivalent of
-- python('print "Hello from Python"')
python [=[
print "Hello from Python"
]=]

-- End Script

我想你想在Lua和Python代码之间至少有一些互操作性。它实现起来有点困难,你应该高度重视的方式取决于你实际解决问题的细节。

最干净的方法可能是创建一种或另一种套接字对,并使Lua和Python代码通过它进行交谈。

你可以从一个VM(比如说Lua)读取一个变量或调用函数的解决方案(比如说Python)反之亦然通常会因为多种原因导致混乱(我尝试了很多并实现了它们)我自己几个。)

答案 1 :(得分:-1)

有一个名为Lupa的python-lua包。这是documentation。看看是否有帮助。