aardio 安装 Python 模块,快速开发界面,生成独立 EXE 一把梭
off999 2024-09-26 16:20 66 浏览 0 评论
aardio 开发图形界面利索,与 Python 交互也方便。
aardio + Python 开发的程序可以一键生成独立 EXE 文件,自带绿色 Python 运行时,生成的 EXE 也不大。
但是 aardio 自带的 Python 是绿色版,添加第三方模块需要手动安装 —— 比较麻烦。今天花了点时间研究了一下,在 aardio 中引入了 pip 安装工具,这就舒服了 !
在 Python 工程内运行 pip 安装 Python 模块
首先请更新 aardio 与 py3 扩展库,然后如下图创建 py3 工程:
创建工程以后,在工程管理器双击「安装模块 > pip」
打开 pip.aardio 指定模块名称,然后点击「运行」按钮:
pip 就会自动安装好模块了,操作就这么简单。
py3.pip 默认会将 Python 模块安装到工程中的 "/py/site-packages" 目录下。发布时仅打包当前工程的 Python 模块,生成 EXE 的体积就会更小。
创建空白 aardio 文件调用 py3.pip 安装 Python 模块
也可以点 aardio 左上角『新建控制台』按钮新建一个代码文件。
输入以下代码调用 py3.pip 。
import py3.pip;
//切换国内镜像源
py3.pip.setIndexUrl("aliyun")
//安装 Python 模块
py3.pip("install","jsonrpclib")
点『运行』按钮。
没有保存到文件的 aardio 代码,应用程序根目录( "/" )也指向当前工程目录,所以运行上面的代码也会将模块安装到当前工程。
上述操作过程动画演示:
使用 py3.pip 时切换 Python 版本
如果使用 py3.10 扩展库,则引用库需要改为 py3.10.pip ,例如:
import py3.10.pip;
/*
用的时候仍然要用 py3.pip,不能写 py3.10.pip,这是违反 aardio 语。
*/
py3.pip("install","jsonrpclib");
同一个 aardio 工程应当只使用一个 Python 版本。用 Python 要记住不同版本有些东西是不兼容的,例如我写的 py3.pip 与 py3.10.pip 的实现都是不同的。
说实话用 aardio 是真幸福,例如现在 aardio 版本是 v35,用 v34 的用户都很罕见。
使用 py3.pip 切换镜像源
切换镜像源示例:
import py3.pip;
//切换国内镜像源
py3.pip.setIndexUrl("aliyun")
参数可以直接写源地址,也可以改为缩写,有哪些缩写请参考该函数说明。或右键点该函数名,然后点跳转到定义。
Python 代码放入 /py 目录
在 aardio 中Python 代码或者模块 —— 应当总是放在 /py 目录下。
Python 扩展库默认就会在 /py 目录下搜索 Python 模块。而且发布工具也自动支持 /py 目录(即使没有添加 /py 到工程中,只要工程中有这个目录,aardio 都可以自动识别 )。
请注意看下图 Python 程序转独立 EXE 工具,就会默认选中 /py 目录:
使用 plus 控件制作精美界面
aardio 中的 plus 控件做界面很方便,也很简单。
plus 控件可支持 各种字体图标,jpg 图像,透明 gif 图像,透明动画,半透明 png 图像,并可设定多种不同的绘图模式、九宫格贴图等等,使用 plus 控件可以简单地通过在窗体设计器中拖拉创建各种漂亮的控件效果、可创建静态图片框、动画播放控件、按钮、透明按钮、不规则按钮、复选框、超链接、进度条、扇形进度条、滑块跟踪条、选项卡、弹出菜单、下拉框...... plus 控件还提供了非常多的灵活的可调整参数,如果您擅于发挥可以做出更多的控件效果。
plus 控件是用纯 aardio 代码实现的,体积很小,所以生成的 EXE 也很小。
下面简单介绍一下 plus 控件的用法。
1、拖一个 plus 控件到界面上,选中 plus 控件。
2、鼠标双击并打开 aardio 工具 / plus 控件配色工具。
3、配置好颜色样式,或者点击预设的范例样式,
然后点击「导出到窗体设计器选中控件」就可以了。
更多教程请查看 aardio 开始页的《 系列教程:使用 plus 控件制作精美界面 》。
Python 程序转为独立 EXE 文件
在 aardio 中将 Python 程序转为独立 EXE 只要点下图的按钮就可以了:
不得不说 Python 生成的独立 EXE 体积是真小,只有十几 MB,打个压缩包也就几 MB。相比动不动就上百 MB 的 Electron ,算是很小了。
aardio 与 Python 相互调用
刚刚还有人问我一个问题,aardio 怎么获取 Python 的值。
其实 aardio 与 Python 相互调用非常方便,建议看一下范例,代码都非常简单,要不了几分钟:
aardio 与 Python 交互真的很方便,示例:
import console;
import py3;
//导入 Python 模块。
var itertools = py3.import("itertools")
//调用 Python 函数,支持纯 aardio 类型参数
var permutations = itertools.permutations({"a","b","c"});
//调用 Python 内置函数 list
var pyList = py3.list(permutations);
//遍历 Python 对象成员
for( item in pyList.each() ){
console.log(item); //像 aardio 对象一样使用 Python 对象
}
console.pause();
aardio 调用 Python 代码示例:
import py3;
var pyCode = /**
def sign_request():
from hashlib import sha1
import hmac
import binascii
key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
hashed = hmac.new(key.encode("gbk"), 'test'.encode("UTF-8"), sha1)
return binascii.b2a_base64(hashed.digest())[:-1].decode("UTF-8")
**/
//执行Python3 的代码
py3.exec( pyCode )
//调用 Python __main__ 模块函数
var pyObject = py3.main.sign_request();
import console;
console.log( pyObject )
console.pause()
有用户说 Python 代码中多按一个空格就会出错,要 aardio 修复这个 "bug"。其实 Python 中的空格缩进是语法元素,要求非常严格。不能随意按空格。
aardio 支持混编十几种编程语言,例如 C语言、C++、C#、Java、Python、R、JavaScript、Node.Js、Fortran、VB、Flash ActionScript、PHP、VBScript、PowerShell、NewLISP、AutoLISP、Delphi、FreeBASIC、Ruby、Rust、Julia、Nim、Go 语言、批处理 ......等等非常多。
但使用任何一种语言,基础语法都需要先了解一下。
aardio 中使用其他编程语言只是可选项
这里需要说明一下,在 aardio 中使用其他编程语言只是可选项。
实际上大多数 aardio 程序都是纯 aardio 代码开发的,aardio 中的标准库也基本都是纯 aardio 代码实现。
即使是 win.ui 界面库也是纯 aardio 代码实现的。
而且 aardio 也不存在翻译其他编程语言这种功能,aardio 是 aardio ,其他语言是其他语言。
例如 aardio 里的 Python 就是原来的 Python ,aardio 只是用 Python 提供的接口去调用执行 Python 而已。
相关推荐
- Linux 网络协议栈_linux网络协议栈
-
前言;更多学习资料(包含视频、技术学习路线图谱、文档等)后台私信《资料》免费领取技术点包含了C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,Z...
- 揭秘 BPF map 前生今世_bpfdm
-
1.前言众所周知,map可用于内核BPF程序和用户应用程序之间实现双向的数据交换,为BPF技术中的重要基础数据结构。在BPF程序中可以通过声明structbpf_map_def...
- 教你简单 提取fmpeg 视频,音频,字幕 方法
-
ffmpeg提取视频,音频,字幕方法(HowtoExtractVideo,Audio,SubtitlefromOriginalVideo?)1.提取视频(ExtractVi...
- Linux内核原理到代码详解《内核视频教程》
-
Linux内核原理-进程入门进程进程不仅仅是一段可执行程序的代码,通常进程还包括其他资源,比如打开的文件,挂起的信号,内核内部的数据结构,处理器状态,内存地址空间,或多个执行线程,存放全局变量的数据段...
- Linux C Socket UDP编程详解及实例分享
-
1、UDP网络编程主要流程UDP协议的程序设计框架,客户端和服务器之间的差别在于服务器必须使用bind()函数来绑定侦听的本地UDP端口,而客户端则可以不进行绑定,直接发送到服务器地址的某个端口地址。...
- libevent源码分析之bufferevent使用详解
-
libevent的bufferevent在event的基础上自己维护了一个buffer,这样的话,就不需要再自己管理一个buffer了。先看看structbufferevent这个结构体struct...
- 一次解决Linux内核内存泄漏实战全过程
-
什么是内存泄漏:程序向系统申请内存,使用完不需要之后,不释放内存还给系统回收,造成申请的内存被浪费.发现系统中内存使用量随着时间的流逝,消耗的越来越多,例如下图所示:接下来的排查思路是:1.监控系统中...
- 彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏
-
作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成...
- linux网络编程常见API详解_linux网络编程视频教程
-
Linux网络编程API函数初步剖析今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。1、socket(family...
- Linux下C++访问web—使用libcurl库调用http接口发送解析json数据
-
一、背景这两天由于一些原因研究了研究如何在客户端C++代码中调用web服务端接口,需要访问url,并传入json数据,拿到返回值,并解析。 现在的情形是远程服务端的接口参数和返回类型都是json的字符...
- 平衡感知调节:“系统如人” 视角下的架构设计与业务稳定之道
-
在今天这个到处都是数字化的时代,系统可不是一堆冷冰冰的代码。它就像一个活生生的“数字人”,没了它,业务根本转不起来。总说“技术要为业务服务”,但实际操作起来问题不少:系统怎么才能快速响应业务需求?...
- 谈谈分布式文件系统下的本地缓存_什么是分布式文件存储
-
在分布式文件系统中,为了提高系统的性能,常常会引入不同类型的缓存存储系统(算法优化所带来的的效果可能远远不如缓存带来的优化效果)。在软件中缓存存储系统一般可分为了两类:一、分布式缓存,例如:Memca...
- 进程间通信之信号量semaphore--linux内核剖析
-
什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠...
- Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门
-
一、前言在推流领域,尤其是监控行业,现在主流设备基本上都是265格式的视频流,想要在网页上直接显示监控流,之前的方案是,要么转成hls,要么魔改支持265格式的flv,要么265转成264,如果要追求...
- 30 分钟搞定 SpringBoot 视频推拉流!实战避坑指南
-
30分钟搞定SpringBoot视频推拉流!实战避坑指南在音视频开发领域,SpringBoot凭借其快速开发特性,成为很多开发者实现视频推拉流功能的首选框架。但实际开发中,从环境搭建到流处理优...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)