我正在寻找一个Lua脚本并让它也从Python源代码执行一些东西,好像它是这样的:
#!/bin/lua
-- begin lua part
print "Hello"
-- begin python part
Somehow_Executes_Python {
print "Hello" #In python, of course
}
-- End Script
明白了吗? 我不确定它是否可能,但如果我能以某种方式在受控块中实现外源代码,那就太棒了。我已经看到了从不同的文件/链接/源中调用它们的其他事情,但我希望它能直接从lua源代码内部工作,而不是完全来自不同的文件。
答案 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。看看是否有帮助。