如何在Mac OS Mountain Lion上与python一起使用lua

2024-06-07 12:59:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用lupa0.20+luajit2.0.0将lua嵌入到python2.7的代码中。不幸的是,我不能让它在山狮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)

有什么窍门可以让它工作吗?在


Tags: 代码inosmac错误linefileluajit
3条回答

这一点很接近于为我工作,但有点不足。lupa的一个新版本最近发布了,所以可能有些变化。对我来说,上面的方法几乎可以工作,但是我在lua运行时遇到了一个未定义符号的问题。在

我让卢帕为小牛队做了以下工作:

  • 在自制程序上安装Lua:http://brew.sh/。在
  • 安装cython:对于我来说,我只是使用了easy-uninstallcython,因为我很懒,不打算用cython来做其他事情。我想你也可以用自制的。在
  • 下载/安装lupa:然后,按照上面的说明,除了,您还需要返回None作为第二个参数。e、 g

    def find_lua_build(no_luajit=假): #试着找到当地的LuaJIT2建筑 操作系统路径=路径操作系统 +return dict(libraries=['lua'],include\u dirs=['/usr/local/include']),

  • 最后,安装python模块,并明确表示要用cython编译: 水蟒设置.py用cython安装

如果这不起作用,我会尝试在自制程序中使用不同版本的lua。如果你想知道为什么设置.py上面指向的是/usr/local/include,这是homebrew制作到活动“brew”的符号链接的地方。在

我用一个安装了brew的lua5.1在Mavericks上运行。也许对你来说也有帮助。在

如果您使用git repo中的版本,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

^{pr2}$

不能将lupa x86_64与系统安装的python一起使用。luajit 64位要求可执行文件(在本例中是python)与-pagezero_size 10000-image_base100000000链接。在

系统安装的python并不是这样链接的,所以最好的办法是找出如何在osx上构建一个32位luajit(无法帮助),构建一个32位lupa(ARCHFLAGS=“-arch i386”python)设置.py构建),看看它是否适合您。在

或者,构建一个使用这些链接器标志的64位python。在

编辑:实际上,lua51是luajit的一个替代品。指着卢帕设置.py像往常一样在Lua5图书馆工作。在

相关问题 更多 >

    热门问题