我的系统环境:
uos操作系统
arm64(在ubuntu和debian下同样适用)
我们写好一个python工程后常常需要将软件打包,便于将写好的软件安装 在其他没有安装工作环境的电脑上。下面介绍一个python工程的打包过程, 分为两大步骤:
1、将工程打包生成一个可执行文件;
2、将可执行文件和工程依赖的所有文件制作成.deb安装包。
1.将python程序生成可执行文件需要用到pyinstaller工具,
官网上下载pyinstaller,网址 http://www.pyinstaller.org/
使用推荐安装,pip install pyinstaller
2.安装完毕后直接使用命令执行pyinstaller demo.py
(该条命令执行的是单文件的程序)
如果应用程序是多文件,参考https://www.jianshu.com/p/c99577b9c901
主要就是以下格式,例如:pyinstaller main.py -p function1.py -p function2.py --hidden-import function1 --hidden-import function2
pyinstaller [主文件] -p [其他文件1] -p [其他文件2]
--hidden-import [自建模块1]
--hidden-import [自建模块2]
# 以上为一整条命令
3.执行完pyinstaller后会生成dist文件夹,可执行文件和所有生成的依赖都在该目录下。可以点击运行可执行程序是否可以运行
如果无法执行可能是你的应用程序需要用到资源文件,如图片,ui界面等,可以将资源文件拷贝到dist文件夹下即可运行
1、新建一个文件夹,例如在用户目录下新建mydeb文件夹
2、在mydeb文件夹建立如下结构的文件夹和文件
|——mydeb
|————usr
|————lib
|——可执行文件及执行所需依赖文件(安装后,就在你的/usr/lib生成相应的可执行 文件)
|————share
|—icons
|——deb.png(启动器图标文件生成到/usr/share/icons/)
|———applications
|——deb.desktop(桌面文件生成到/usr/share/applications/)
|————DEBIAN(大写、用来制作打包文件)
|————control(描述deb包的信息必须的文件)
3.然后将第一步中生成的dist文件夹下所有文件都拷贝到lib目录下
4.编辑deb.desktop,vi deb.desktop
输入如下内容:
[Desktop Entry]
Name=mydeb #这个是程序名称
Comment=制作deb的工具 #注释
Exec=/usr/lib/demo #可执行文件存放的位置
Icon=/usr/share/icons/deb.png #图标存放的位置
Terminal=false #是否使用终端
Type=Application #应用类型
X-Ubuntu-Touch=true
Categories=Development #分类的位置
Name[en]=desktop
注意:1、#的内容都要删除,不要有任何注释等不必要的信息,否则有时会出现 启动程序错误。
2、文件夹名首尾千万不要出现空格,否则会出错。
Categories可以取以下值,表示程序的启动快捷方式放在哪个菜单下:
应用菜Application; Network放在互联网 (Internet);办公 Office;图形 Graphics;声音和视AudioVideo; 系统工具 System;编程 Development;附件Utility;影音 AudioVideo;游戏 Game;首 选项 Settings(GNOME;GTK;Settings;HardwareSettings;);系统管理System。
5.cd到control所在目录,编辑control,vi control
control文件内容输入如下内容:
package: mydeb #安装包的名称
version: 1.0.0 #版本
architecture: arm64 #平台
maintainer: yang #维护者
description: you can description the deb #描述安装包的信
把注释的文本全部删掉
6.打包 在mydeb文件夹的路径上:
sudo dpkg -b mydeb mydeb_1.0.0_arm64.deb 打包
包名的命名与control文件中的信息对应
7.安装
sudo dpkg -i mydeb_1.0.0_arm64.deb
安装好软件后启动器在/usr/share下的的applications中,可以直接启动。也可以在左下角系统栏中找到启动图标