本篇文章内容仅供简略参考。

文章内容来源于我的飞书文档>麒麟实训>大作业-编译与打包,更多问题的详细记录、示例文件以及调研文档请参看源文档。

Python源码编译

python编译
安装pyinstaller:

1
pip install https://github.com/pyinstaller/pyinstaller/tarball/develop

只需对入口文件执行命令:

1
2
3
# 两种打包方式
pyinstaller -F run.py # 打包成一个二进制文件,但启动速度慢
pyinstaller -D run.py # 打包出多个文件,程序启动速度快

参考:
Python PyInstaller安装和使用教程(详解版) (biancheng.net)
PyQt5软件打包_王火火的博客-CSDN博客_pyqt打包

Pyqt窗口图标

关于应用程序窗口图标显示问题可参考:http://t.zoukankan.com/jingsupo-p-13536449.html
加代码的地方:在ui转成的.py文件

1
self.setWindowIcon(QIcon(':/signal-slot-demo.ico'))

打包后,编译生成的二进制文件的同级目录需要放上图标。

打包过程总览

  1. 按照《麒麟软件打包规范》构造deb包目录
  2. 打开源码项目执行pyinstaller -D run.py -n signal-slot-demo
  3. 在pyinstaller中生成的signal-slot-demo文件夹中添加icon图标。并将该文件夹放入构造好的deb包目录下的/opt/apps/中

img

  1. 进入构造好的目录,执行命令:debuild -i -us -uc -b
  2. 返回上一级目录执行:sudo dpkg -i signal-slot-demo_1.0.0-1_all.deb

结果:运行正常。窗口图标、任务栏图标、开始菜单栏图标运行正常。(开始菜单栏中的图标是.desktop文件中Icon指定的svg图标。程序窗口以及任务栏图标是Pyqt中代码指定的图标。)

具体文件示例

Control 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Source: signal-slot-demo
Version: 1.0.0
Maintainer: Wu WanQin <wuanqin@tju.edu.cn>
Section: unknown
Priority: optional
Build-Depends: debhelper
Standards-Version: 4.4.1
Homepage: https://uuanqin.top

Package:signal-slot-demo
Multi-Arch: foreign
Architecture: all
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: 信号与信号槽示例。

Install 文件

1
2
opt/apps/signal-slot-demo/ /opt/apps
usr/share /usr/

.desktop 文件

1
2
3
4
5
6
7
8
9
[Desktop Entry]
Name=Signal-Slot-Demo
Comment=An example
Exec=/opt/apps/signal-slot-demo/signal-slot-demo %F
Icon=/usr/share/icons/scalable/apps/signal-slot-demo.svg
Terminal=false
Type=Application
X-Ubuntu-Touch=true
Categories=Office