安装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后跳过建立项目界面 ,打开开发者命令提示。

 

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

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

 随后输入命令构建程序

mingw32-make

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

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

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

luajit 

LuaJIT安装完成。

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

N = 8function isplaceok(a, n, c)for i = 1, n - 1 doif (a[i] == c) or(a[i] - i == c - n) or(a[i] + i == c + n) thenreturn falseendendreturn true
endfunction printsolution(a)for i = 1, N dofor j = 1, N doio.write(a[i] == j and "X" or "-", " ")endio.write("\n")endio.write("\n")
endfunction AoLiGei(a, n)if n > N thenprintsolution(a)elsefor c = 1, N doif isplaceok(a, n, c) thena[n] = cAoLiGei(a, n + 1)endendend
endAoLiGei({}, 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)

输出正常。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis速成(二)

文章目录 1. Mybatis基础操作1.1 需求1.2 准备1.3 删除1.3.1 功能实现1.3.2 日志输入1.3.3 预编译SQL1.3.3.1 介绍1.3.3.2 SQL注入1.3.3.3 参数占位符 1.4 新增1.4.1 基本新增1.4.2 主键返回 1.5 更新1.6 查询1.6.1 根据ID查询1.6.2 数据封装1.6.3 条件查询1.6.4 参数名说明 2.…

PLC-Recorder的延伸分析功能说明

目录 一、缘起 二、如何从PLC-Recorder获取数据 1、在线获取 2、全自主打开数据文件 3、延伸分析 三、设置方法 四、效果展示 一、缘起 在各个行业,在不同的场景中,朋友们拿到数据后,想做的事情五花八门,有做宏观分析的、…

排序前言冒泡排序

目录 排序应用 常见的排序算法 BubbleSort冒泡排序 整体思路 图解分析 ​ 代码实现 每趟 写法1 写法2 代码NO1 代码NO2优化 时间复杂度 排序概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递…

Anaconda修改虚拟环境的路径

新版本的anaconda会默认将虚拟环境配置在C盘下,默认的路径是C:\Users\username。同时anaconda3下envs目录是空的。 这里是建立虚拟环境是将路径修改到anaconda的方法。 第一步——修改.condarc文件 首先,C:\Users\username找到.condarc文件 添加或修…

洛谷P5714 肥胖问题 题解

#题外话(第25篇题解) #先看题目 题目链接https://www.luogu.com.cn/problem/P5714 特别的,对于Microsoft Edge浏览器,其自带有截长图引擎,路径为三个点→截图→选定后下拉即可,浏览器会自动为你下拉并选中…

Code Composer Studio (CCS) - Comment (注释)

Code Composer Studio [CCS] - Comment [注释] References Add Block Comment: 选中几行代码 -> 鼠标右键 -> Source -> Add Block Comment shortcut key: Ctrl Shift / Remove Block Comment: 选中几行代码->鼠标右键->Source->Remove Block Comment s…

Unity类银河恶魔城学习记录7-6 P72 Bouncy sword源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill_Controller.cs using System.Collections; using System.Colle…

相机图像质量研究(32)常见问题总结:图像处理对成像的影响--振铃效应

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

CSS概述 | CSS的引入方式 | 选择器

文章目录 1.CSS概述2.CSS的引入方式2.1.内部样式表2.2.行内样式表2.3.外部样式表 3.选择器 1.CSS概述 CSS,全称Cascading Style Sheets(层叠样式表),是一种用来设置HTML(或XML等)文档样式的语言。CSS的主要…

SG3225EAN规格书

SG3225EAN 晶体振荡器利用先进的锁相环技术和AT切割晶体单元,提供了宽频率范围和高性能LV-PECL输出,73.5 MHz至700 MHz的宽频率范围,能够保证高稳定性和宽频率调整的能力,适应于多样化的应用需求。2.5V和3.3V两种供电电压&#xf…

win10 环境下Python 3.8按装fastapi paddlepaddle 进行图片文字识别1

###按装 用conda 创建python 3.8的环境,可参看本人python下的其它文章。 在pycharm开发环境下按装相关的模块: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple fastapi pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "uvi…

StarRocks表设计——分区分桶与副本数

目录 一、数据分布 1.1 概述 1.2 数据分布方式 1.2.1 Round-Robin 1.2.2 Range 1.2.3 List 1.2.4 Hash 1.3 StarRocks的数据分布方式 1.3.1 不分区 Hash分桶 1.3.2 Range分区Hash分桶 三、分区 3.1 分区概述 3.2 创建分区 3.2.1 手动创建分区 3.2.2 批量创建分区…

【教学类-19-10】20240214《ABAB式-规律黏贴18格-手工纸15*15CM-一页3种图案,AB一组样板,纵向、有边框》(中班)

背景需求 利用15*15CM手工纸制作AB色块手环(手工纸自带色彩),一页3个图案,2条为一组,画图案,黏贴成一个手环。 素材准备 代码展示 # # 作者:阿夏 # 时间:2024年2月14日 # 名称&…

云计算基础 -NUMA

UMA UMA中文翻译叫:一致性内存访问 多个CPU通过同一根前端总线(FSB)来访问内存(所有的内存访问都需要通过北桥芯片来完成),若多个CPU访问内存的不同内存单元还是相同内存单元,同一时刻&#x…

机器学习中的10种非线性降维技术对比总结

降维意味着我们在不丢失太多信息的情况下减少数据集中的特征数量,降维算法属于无监督学习的范畴,用未标记的数据训练算法。 尽管降维方法种类繁多,但它们都可以归为两大类:线性和非线性。 线性方法将数据从高维空间线性投影到低维空间(因此…

计算机设计大赛 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习YOLO抽烟行为检测 该项目较为新颖,适合作为竞赛课…

多线程---线程同步,线程通信

线程同步 1.概述 线程同步是多线程编程中的一个重要概念,它指的是在多线程环境中,通过一定的机制保证多个线程按照某种特定的方式正确、有序地执行。这主要是为了避免并发问题,如死锁、竞态条件、资源争用等,确保数据的一致性和完…

【复现】某公司指挥调度管理平台 RCE漏洞_51

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 该平台提供强大的指挥调度功能,可以实时监控和管理通信网络设备、维护人员和工作任务等。用户可以通过该平台发送指令…

视频生成模型作为世界模拟器

我们探索了在视频数据上大规模训练生成模型。具体来说,我们联合训练文本条件扩散模型,处理不同持续时间、分辨率和宽高比的视频和图像。我们利用一种在时空补丁上操作视频和图像潜码的transformer架构。我们最大的模型,Sora,能够生…

树状菜单(利用映射-bootstrap+jQuery实现折叠功能)

效果&#xff08;默认全部展开&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><…