如何从Lua调用Python函数?

Pra*_*aur 11 python lua

我想从我的lua文件中运行一个python脚本.我怎样才能做到这一点?

例:

Python代码

#sum.py file
def sum_from_python(a,b)
    return a+b 
Run Code Online (Sandbox Code Playgroud)

Lua代码

--main.lua file
print(sum_from_python(2,3)) 
Run Code Online (Sandbox Code Playgroud)

gre*_*olf 7

听起来像Lunatic-Python正是你正在寻找的.有一个疯子蟒蛇的分叉比原来更好.我自己曾经为自己做过几次错误修复.

所以重复你的例子,

Python代码:

# sum.py
def sum_from_python(a, b):
  return a + b
Run Code Online (Sandbox Code Playgroud)

Lua代码:

-- main.lua
py = require 'python'

sum_from_python = py.import "sum".sum_from_python
print( sum_from_python(2,3) )
Run Code Online (Sandbox Code Playgroud)

输出:

lua main.lua
5
Run Code Online (Sandbox Code Playgroud)

大多数东西都像你期望的那样工作但是疯狂蟒蛇有一些限制.

  1. 它不是真正的线程安全.在lua中使用python线程库会产生意外行为.
  2. 无法使用lua中的关键字参数调用python函数.一个想法是通过传递一个表来模仿lua,但我从来没有实现过.
  3. 与lupa不同,lunatic-python只有一个全局lua状态和一个python VM上下文.因此,您无法使用lunatic-python创建多个VM运行时.

至于lupa,请注意它只是一个python模块,这意味着你必须使用python作为宿主语言 - 它不支持lua是"驱动"语言的用例.例如,您将无法使用lua解释器中的lupa或嵌入lua的C/C++应用程序.OTOH,Lunatic-Python可以从桥的任何一侧驱动.


cub*_*l42 1

您可以尝试这个库或编写一些特定于您的项目的桥接器,但这需要对 Lua C-API 和 Python C-API 都有很好的了解。