安装luajit及使用python运行lua脚本

这篇具有很好参考价值的文章主要介绍了安装luajit及使用python运行lua脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  使用Python运行lua脚本前,需要先安装LuaJIT,LuaJIT的官网是下载 (luajit.org)

目前已不再使用.exe文件的下载方式,需要使用Git从公共仓库下载源码,git命令为:

  $ git clone https://luajit.org/git/luajit.git

下载后源码文件夹会保存到git设置的路径下 ,随后再打开官网的安装教学界面安装 (luajit.org)

  根据官网提示,Windows平台需要使用Visual Studio、MinGW 或 Cygwin 程序构建,我用的Visual Studio。打开Visual Studio后跳过建立项目界面 ,打开开发者命令提示。

 安装luajit及使用python运行lua脚本,lua,开发语言,python

随使用命令cd到下载后luajit文件夹的src路径

cd C:\......(自己的下载路径)\luajit\src

 随后输入命令构建程序

mingw32-make

完成后,src文件夹会多出luajit.exe文件和lua51.dll,随便一个顺眼的地方新建一个LuaJIT文件夹,将luajit.exe文件和lua51.dll复制进去,再新建一个lua文件夹,把jit文件夹复制进去

安装luajit及使用python运行lua脚本,lua,开发语言,python

把LuaJIT文件夹的路径添加到环境变量的系统变量path中

安装luajit及使用python运行lua脚本,lua,开发语言,python

 添加完成后按win+r打开,输入cmd,在cmd中输入:

luajit 

安装luajit及使用python运行lua脚本,lua,开发语言,python

LuaJIT安装完成。

开始编写一个lua脚本,我从《lua程序设计》这本书中挑选了一个很经典的八皇后问题的代码抄上去,编写完成后运行一下检查是否存编译问题并保存为.lua文件:

N = 8

function isplaceok(a, n, c)
    for i = 1, n - 1 do
        if (a[i] == c) or
        (a[i] - i == c - n) or
        (a[i] + i == c + n) then
            return false
        end
    end
    return true
end

function printsolution(a)
    for i = 1, N do
        for j = 1, N do
            io.write(a[i] == j and "X" or "-", " ")
        end
        io.write("\n")
    end
    io.write("\n")
end

function AoLiGei(a, n)
    if n > N then
        printsolution(a)
    else
        for c = 1, N do
            if isplaceok(a, n, c) then
                a[n] = c
                AoLiGei(a, n + 1)
            end
        end
    end
end

AoLiGei({}, 1)

随后编写python代码,使用subprocess 包调用 LuaJIT 执行指定的 Lua 脚本,再添加一些错误处理功能来捕获任何可能出现的异常:

import subprocess  
import os  

"""
刚才编写的lua脚本保存名字为岛市老八.lua
subprocess.run(['luajit', '岛市老八.lua'], check=True) 可以直接运行
"""
 
# 脚本路径  
lua_script_path = './老八秘制小汉堡/岛市老八.lua'  
  
# 检查Lua脚本是否存在  
if not os.path.exists(lua_script_path):  
    print(f"Error: Lua script not found at {lua_script_path}")  
else:  
    try:  
        # 使用subprocess调用LuaJIT执行Lua脚本  
        result = subprocess.run(['luajit', lua_script_path], check=True, capture_output=True, text=True)  
          
        print("Lua script output:")  
        print(result.stdout)  
          
    except subprocess.CalledProcessError as e:  
        # 如果LuaJIT执行失败,打印错误信息  
        print(f"Error executing Lua script: {e}")  
        print(f"Lua script returned non-zero exit code: {e.returncode}")  
        print(f"Lua script stderr output: {e.stderr}")  
    except Exception as e:  
        print(f"An unexpected error occurred: {e}")

简化一下:

import subprocess  
  
try:  
    subprocess.run(['luajit', '岛市老八.lua'], check=True)  
except FileNotFoundError as e:  
    print("找不到文件或命令:", e)  
except PermissionError as e:  
    print("权限错误:", e)  
except Exception as e:  
    print("发生错误:", e)

安装luajit及使用python运行lua脚本,lua,开发语言,python

输出正常。 文章来源地址https://www.toymoban.com/news/detail-834978.html

到了这里,关于安装luajit及使用python运行lua脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pycharm运行R语言脚本(win10环境下安装)

    pycharm 安装 R language for Intellij R language for Intellij 是一个插件,它为Intellij IDEA集成开发环境添加了对R语言的支持。它的作用是让开发者可以在Intellij IDEA中编写、调试和运行R代码。该插件提供了语法高亮、代码自动补全、代码导航、代码重构、代码调试等功能,使得开发者能够

    2024年02月07日
    浏览(53)
  • Lua: 一门轻量级、高效的脚本语言

    在当今软件开发的领域中,寻找一门既灵活又高效的脚本语言,一直是开发者们追求的目标。Lua作为一门小巧、高效、可嵌入的脚本语言,已经成为了众多开发者的首选之一。无论是游戏开发、嵌入式系统、Web 开发还是其他领域,Lua 都展现出了其强大的应用价值和广泛的适

    2024年02月20日
    浏览(39)
  • ardupilot开发 --- Lua脚本篇

    ArduPilot引入了对Lua脚本的支持; 可以同时运行多个脚本; Lua脚本存放在 SD card 中; Copter-4.0 及以上版本才支持Lua脚本; scripting API ?scripting applets ? 飞控条件:2 MB of flash and 70 kB of memory ; 将Lua脚本上传到 SD card’s APM/scripts 文件夹中,在Mission Planner使用MAVFTP可以上传文件;

    2024年02月11日
    浏览(38)
  • 【实战】使用Lua脚本怎么清理redis中的数据【实战】使用Lua脚本怎么清理redis中的数据

    首先我们通过hiredis 向redis 中写入了数据,这里我们主要以测试为目的,所以,Key 值设定为毫秒级时间戳。 但是当我们测试完成之后,需要验证实际情况,这里我们直接使用redis-cli 登录数据库看看。 本次测试完成,接下来要结合业务开始测试,需要清理数据库,但是一条一

    2024年02月13日
    浏览(87)
  • 【开发环境】安装 Hadoop 运行环境 ( 下载 Hadoop | 解压 Hadoop | 设置 Hadoop 环境变量 | 配置 Hadoop 环境脚本 | 安装 winutils )

    Hadoop 发布版本在 https://hadoop.apache.org/releases.html 页面可下载 ; 当前最新版本是 3.3.6 , 点击 Binary download 下的 binary (checksum signature) 链接 , 进入到 Hadoop 3.3.6 下载页面 : 下载地址为 : https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz 官方下载速度很慢 ; 这里提供一个 Hadoop 版

    2024年02月13日
    浏览(66)
  • 使用lua脚本操作redis

    redis中实现事务有两种方法: 1.WATCH监视键的变动,然后MULTI开始事务,EXEC提交事务 WATCH key [key…]:监视一个或多个键,如果在事务执行之前被修改,则事务被打断。 MULTI:标记一个事务的开始。 EXEC:执行事务中的所有命令。 DISCARD:取消一个事务,放弃执行事务中的所有命

    2024年02月16日
    浏览(44)
  • lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合

    lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合 7.0点赞功能-定时持久化到数据库-lua脚本的编写_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1bu411j75u 这个脚本主要是放到Springboot工程里的, 这里如果是向放到字段控制台执行,那就要加入 eval 以及其他参数:

    2024年02月13日
    浏览(46)
  • 【Redis 开发】分布式锁中的常见问题和Lua脚本

    分布式锁中我们设置的过期时间: 如果有一个线程获取锁之后在进行操作时,到达了锁的过期时间,之后就会有别的线程获得锁,如果这时,第一个线程执行完成后释放锁,就会将第二个锁的线程删除 针对这个情况如何改进: 在获取锁时存入线程标示(可以用UUID) 在释放

    2024年04月28日
    浏览(39)
  • Redis命令行使用Lua脚本

    Lua脚本在Redis中的使用非常有用,它允许你在Redis服务器上执行自定义脚本,可以用于复杂的数据处理、原子性操作和执行多个Redis命令。以下是Lua脚本在Redis中的基本使用详细讲解: 运行Lua脚本: 在Redis中,你可以使用 EVAL 或 EVALSHA 命令来运行Lua脚本。 EVAL 用于执行未经缓存

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包