如何在Mac OS Mountain Lion上使用Lua与Python
我一直在使用Lupa 0.20 + LuaJIT 2.0.0将Lua嵌入Python 2.7代码中,并在W7Box上运行。不幸的是,我无法在Mountain Lion Mac OS上让它运行。我能够编译LuaJIT和Lupa,但每当我尝试使用lupa时,就会出现错误,例如:
lupa._lupa.LuaError: Failed to initialise Lua runtime
File "/Users/rafael/Projects/Lua/test.py", line 3, in <module>
lua = LuaRuntime()
File "/usr/local/lib/python2.7/site-packages/lupa/_lupa.so", line 116, in lupa._lupa.LuaRuntime.__cinit__ (lupa/_lupa.c:2237)
有没有什么提示可以让它正常工作?
我已经在 Mavericks 上使用 brew 安装的 Lua 5.1 让它工作了。在 Mountain Lion 上也可能会工作。
如果你使用他们 git 仓库中的版本,setup.py 文件已经修复了,你只需要下载它、解压缩它,并通过执行以下命令安装 lupa:
$ ARCHFLAGS="-arch x86_64" python setup.py install --no-luajit
如果你更愿意使用已发布的 v0.20 版本,只需将这两个文件保存在任何地方(但在同一个目录中),然后运行 make lupa clean:
lupa-5.1.diff:
--- / Users / flavio / working_copies / databuild / lupa-0.20 / setup.py
+++ (clipboard)
@@ -77,6 +77,7 @@
basedir = os.path.abspath(os.path.dirname(__file__))
def find_luajit_build():
+ return dict(libraries=['lua'], include_dirs=['/usr/local/include'])
os_path = os.path
for filename in os.listdir(basedir):
if filename.lower().startswith('luajit'):
Makefile:
clean:
rm -rf lupa-0.20*
lupa:
brew install lua
wget https://pypi.python.org/packages/source/l/lupa/lupa-0.20.tar.gz
tar zxf lupa-0.20.tar.gz
patch -p1 < lupa5.1.diff
cd lupa-0.20/ && python setup.py install --no-luajit
test:
ipython -c "from lupa import LuaRuntime; lua = LuaRuntime()"
这个方法对我来说很接近成功,但还是有些问题。最近发布了 lupa 的新版本,所以可能有些变化。对我来说,上面的方法几乎可以解决问题,但我在 lua 运行时遇到了未定义的符号问题。
我通过以下步骤在 Mavericks 上使 Lupa 可用:
在 Homebrew 上安装 Lua:http://brew.sh/。
安装 cython:对我来说,我只是懒得安装 cython,因为我不打算将其用于其他任何事情,所以我使用了 easy_install cython。你也可以使用 Homebrew 进行安装。
下载/安装 lupa:然后,按照上面的说明操作,但要附带返回 None 作为第二个参数。例如,
def find_lua_build(no_luajit=False):
尝试查找本地 LuaJIT2 构建
os_path = os.path +return dict(libraries=['lua'], include_dirs=['/usr/local/include']), None
最后,安装 Python 模块,并明确指示使用 cython 进行编译: sudo python setup.py install --with-cython
如果这不起作用,我建议尝试使用不同版本的 lua 在 Homebrew 上。如果你想知道为什么上面的 setup.py 指向 /usr/local/include,那是因为 Homebrew 将其符号链接到活动的“brew”目录中。
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你不能使用 lupa x86_64 与系统安装的 Python。luajit 64 位需要链接 -pagezero_size 10000 -image_base 100000000 的可执行文件(在本例中为 Python)。
系统安装的 Python 没有按照这种方式链接,因此你最好找出如何在 osx 上构建一个 32 位的 luajit(无法帮助),构建一个 32 位的 lupa(ARCHFLAGS="-arch i386" python setup.py build),然后看它是否适合你。
或者,构建一个使用这些链接器标志的 64 位 Python。
编辑:实际上,lua51 可以作为 luajit 的替代品。将 lupa setup.py 指向 lua51 发行版和库并按照常规方式构建;对我有效。