前文曾经讲过python中使用lua的方法,目前用的最多的还是lupa模块,但是通过pip安装的lupa存在一个问题,无法支持lua原生模块,因此本文介绍一下如何用lupa调用原生模块。
首先需要卸载掉原来的lupa
pip uninstall lupa
接下来安装lua,这个不多做介绍了,下载->解压->编辑,本人用的是lua5.1.5,linux和macos都没问题
安装lua之后,需要把lua源码目录里的./etc/lua.pc拷贝到/usr/local/lib/pkg-config/,这里的/usr/local/lib是你lua库安装的位置,这个很重要,否则后边进行不下去
接下来从pip官网下载lupa源码,解压后修改setup.py,搜索--exists 把他替换为--libs,因为lupa的安装程序这里有个逻辑错误,是通过pkg-config的exists参数来判断库是否存在,修改为--libs参数以后可以绕过这个检查,让lupa直接使用你本机安装的lua库。
接下来就是
python setup.py --no-bundle
sudo python setup.py install
为了验证原生模块是否能够编译使用,可以下载一个lua的json扩展,叫lua-cjson,下载地址
下载解压后,如果是linux,直接sudo make install
如果是macos,需要修改Makefile,把macos相关部分的CFLAG配置拷贝过来即可。否则编译参数是不对的,会找不到库
最后就是写一个lua脚本,引用cjson库,通过python去执行这个脚本就可以了