Python中使用lua续,让lupa调用原生模块

前文曾经讲过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去执行这个脚本就可以了

你可能感兴趣的:(Python中使用lua续,让lupa调用原生模块)