安装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、延伸分析 三、设置方法 四、效果展示 一、缘起 在各个行业,在不同的场景中,朋友们拿到数据后,想做的事情五花八门,有做宏观分析的、…

浅谈Websocket

由于 http 存在⼀个明显的弊端(消息只能有客户端推送到服务器端,⽽服务器端不能主动推送到客户端),导致如果服务器如果有连续的变化,这时只能使⽤轮询,⽽轮询效率过低,并不适合。于是 WebSocket 被发明出来 WebSocket 是⼀种在 Web 应⽤程序中实现双向通信的协议。与传…

排序前言冒泡排序

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

人类智能运转所需的知识通常是非线性弥散、聚合的

人类智能所需的知识通常不是按照线性的、逐步增长的方式获取的,而是通过多个不同领域的知识在脑中进行非线性的交互和整合。人类智能的形成是一个复杂的过程,涉及到多个不同的认知能力和知识领域。人们从各种不同的来源获取知识,包括通过学习…

rtt设备io框架面向对象学习-软件模拟rtc设备

目录 1.软件rtc设备实现类2.软件rtc设备类的子类3.初始化/构造流程3.1 设备驱动框架层3.3 设备io管理层 4.总结5.使用 硬件rtc和软件rtc设备是互斥的。因为它们的名字都叫"rtc",在对象容器中不允许重名。 软件rtc设备比较特殊,不依赖于任何硬件…

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的主要…

c# 二叉树

在 C# 中,二叉树是一种常见的数据结构,它由节点组成,每个节点最多有两个子节点:左子节点和右子节点。在 C# 中,可以使用类来实现二叉树的节点,并且通过引用连接节点来构建整棵树。 以下是一个简单的示例&a…

C++中的拷贝构造函数和深拷贝、浅拷贝,如何在C++中实现类和对象的序列化与反序列化?

C中的拷贝构造函数和深拷贝、浅拷贝 拷贝构造函数: 拷贝构造函数是一种特殊的构造函数,它接受一个对其同类的常量引用作为参数,并用于初始化新创建的对象。其主要作用是实现一个类的对象到另一个相同类型对象的拷贝。 拷贝构造函数的原型通常…

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…

[dlib][python]dlib所有whl文件下载地址汇总

python3.12轮子dlib-19.24.2-cp312-cp312-macosx-10-9-x86-64.whl下载地址 https://download.csdn.net/download/FL1623863129/88582377 python3.12轮子dlib-19.24.2-cp312-cp312-macosx-11-0-arm64.whl下载地址 https://download.csdn.net/download/FL1623863129/88582372 pyt…