【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)

Python项目打包发布汇总

【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)
【Python】Python项目打包发布(二)(基于Pyinstaller打包PyWebIO项目)
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)
【Python】Python项目打包发布(四)(基于Nuitka打包PySide6项目)
【Python】Python项目打包发布(五)(制作Windows安装包)

一、Aardio介绍

aardio 专注于桌面软件开发,17年一直保持非常活跃地更新( 更新日志 ),aardio 被多年用于生产项目实践,久经测试和锤炼。
官网链接:https://www.aardio.com/

二、Aardio与Python混合编程

aardio 编程语言快速入门 —— 语法速览
aardio + Python 开发桌面软件快速入门
重点更新 aardio + Python, Java,附带几个重要的小知识

三、基于Aardio打包Python多目录项目

1.Python项目说明

Python项目结构为:

- MyProject
	- In
	- Out
	- App
		- __init__.py
		- app.py
		- MainProgram
			- __init__.py
			- 1.py
			- 2.py
			- main.py

打包目标;

- MyProject
	- In
	- Out
	- App
		- App.exe

2.具体流程

2.1 新建Aardio项目

可以选择空白工程,也可以选择Python项目。
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第1张图片

2.2 Aardio项目结构

选择Python模板,会自动生成py目录
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第2张图片
以下摘自官方范例,具体自行查看

//Python 模块请放在工程目录的 /py 目录下,
string.save("/py/myHttp.py",pyCode );//创建一个自定义模块文件

/*
默认在以下两个目录搜索 Python 模块:
这两个目录都会在生成 EXE 时复制到发布目录(即使 "\py" 目录没有添加到工程中)

	"\py"
	"~\lib\py3\.res\DLLs" 
	
"\py" :	
	文件路径开始为单个斜杠(或反斜杠)表示应用程序根目录,
	应用程序根目录在开发时指工程根目录(工程外单独启动代码则为文件所在目录),
	发布后应用程序根目录就是指 EXE 所在的目录。

"~\lib\py3\.res\DLLs" : 
 
	aardio 规定文件路径开始为波浪线表示 EXE 所在的目录(开发时为 aardio.exe 所在目录)。
	
可以自己添加模块搜索路径,例如:

	py3.appendPath("\py\site-packages\");
*/



/*
aardio 内默认的 Python 搜索模块的路径为:
"~\lib\py3\.res\Lib.zip" //为避免升级时被替换,不建议在这里添加模块,而且有些模块放到 zip 文件加载里会出错。
"~\lib\py3\.res\DLLs" //在这个目录下添加的文件会在发布时复制到发布目录。
"\"
"\py"
"\py\Python+版本号\site-packages" py3.pip 安装的模块默认放这里

aardio 规定文件路径开始为波浪线表示 EXE 所在的目录(开发时为 aardio.exe 所在目录),
文件路径开始为斜杠(或反斜杠)表示应用程序根目录,应用程序根目录在开发时指工程根目录(工程外单独启动代码则为文件所在目录),
发布后应用程序根目录就是指 EXE 所在的目录。
*/

在Aardio中py目录,默认是不能同步的,需修改本地构建为False。本项目为了打包方便,删除并新建了py文件夹。
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第3张图片
另外,需要注意的是:各文件夹的属性

1、忽略目录:设为 true 以后,在发布时会忽略这个目录。
2、内嵌资源:指的是这个目录在发布后会嵌入 EXE 资源,不需要放在外部目录了。aardio 中的很多读文件的函数都支持这种资源目录,不需要修改任何代码,例如读文件的 string.load() 函数,运行模板的 string.loadcode() 函数 …… 但第三方程序不支持,例如 Python 就不支持,所以 Python 模块不要放在 /res/ 目录下。
3、本地构建:要理解这个属性,先要了解一下工程中的目录是『虚拟目录』,并不完全等价于硬盘目录。如果一个文件在工程目录下,但却没有被添加到工程管理器中,那么 aardio 会忽略它。

2.3 导入Python项目到Aardio中

  • 直接将Python主程序目录复制到py文件夹,py文件夹目录页结构为:
- py
   - App
   		- __init__.py
   		- app.py
   		- MainProgram
   			- __init__.py
   			- 1.py
   			- 2.py
   			- main.py
  • 在Aardio添加py文件夹并同步
    【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第4张图片

2.4 Aardio中链接Python代码

2.4.1 可以先画个界面

切换至设计视图,添加界面控件
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第5张图片

2.4.2 链接Python代码测试
/*
执行 aardio 工程中的内嵌资源文件可以这样写: 
py3.exec("/res/test.py") 

也可以用导入模块的方式,例如导入 /py/pyMain.py 文件
py3.import("pyMain")
*/

Aardio中可以使用py3.exec方法执行res目录下Python代码,但是需要注意的是:/res/ 是 EXE 内嵌资源目录,不要将 Python 模块不要放在 /res/ 目录下。

以下为测试,方便理解Aardio调用Python:
Python文件目录结构为:
同级目录时:

- aa.py
- bb.py

在这里插入图片描述
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第6张图片
这样调用可以运行:
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第7张图片
res目录下不能作为模块被引用。
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第8张图片
此时可以将文件置于py目录下,使用import方法调用,但是需要注意的是此时只需要import不带后缀的模块名即可:
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第9张图片
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第10张图片

【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第11张图片
修改Py代码,改变项目目录:

- aa.py
- ab
	- bb.py
	- ___init__.py

此时使用import依然可以正常运行!
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第12张图片
继续修改Py代码,改变项目目录:

aabb
- aa.py
	- aa.py
	-ab
		- bb.py
		- ___init__.py

此时需要通过appendPath方法,将文件置于模块路径。使用import依然可以正常运行!
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第13张图片
综上,可以大概了解aardio链接Python代码的方法。具体可以参考官方示例!

2.4.3链接Python项目完整代码

【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第14张图片
说明:import中需导入自己依赖的第三方包。Aardio中Python 3.7 以下版本不支持 pip 工具。
可通过import的返回值,判断是否调用成功。

2.5 打包发布

【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第15张图片
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第16张图片
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第17张图片

3.打包发布成功

最终目录结构

- App.exe
- In
- Out

最终界面

【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)_第18张图片

你可能感兴趣的:(#,Python,面向百度编程,python,开发语言)