使用fbs工具打包PyQt5程序

tech2025-09-30  12

fbs是基于Python的构建工具,适用于将PyQt或Qt用于Python的桌面应用程序 。它获取您的源代码并将其转换为Windows,Mac或Linux上的独立可执行文件。它还允许您在这些平台上为您的应用程序创建安装程序。

—— 摘自fbs官方手册

1. 安装fbs工具

在本地环境或进入相应的虚拟环境后,即可完成安装(目前仅支持python3.6及以下的版本)

pip install -i 镜像地址 fbs

2. 虚拟环境

进入(win/mac)

project/env/Scripts>activate source project/env/bin/activate

退出

deactivate

3. 打包流程

(1)创建一个项目

进入虚拟环境后输入命令,启动一个fbs项目

fbs startproject

随后会让你输入软件的基本配置信息,可以先随意填写,后期可以更改。

完成之后会在环境的目录下生成一个src文件夹,这是软件的项目骨架,具体结构可以在官方文档上查看。

src/ 源文件的根目录 build/ settings/ 软件的基本信息 main/ icons/ 图标python/ 程序代码resources/ 数据文件,图像等 installer/ 安装程序源文件 requirements/ 存放软件的依赖项

(2)启动项目

在Scripts路径下输入

project/env/Scripts>fbs run

此时会启动一个空白demo

(3)导入项目

在导入项目之前,为了让fbs找到项目代码,还需要在你的mian.py中按照格式引入某些语句

from fbs_runtime.application_context.PyQt5 import ApplicationContext from PyQt5.QtWidgets import QMainWindow import sys if __name__ == '__main__': appctxt = ApplicationContext() # 1. Instantiate ApplicationContext window = QMainWindow() window.resize(250, 150) window.show() exit_code = appctxt.app.exec_() # 2. Invoke appctxt.app.exec_() sys.exit(exit_code)

将其他代码及相关的资源文件拖入到对应的文件夹后,同样在Scripts路径下输入

project/env/Scripts>fbs run

此时启动的便是自己写的软件程序。

(4)打包

debug版

project/env/Scripts>fbs freeze --debug

正式版

project/env/Scripts>fbs freeze

如果一切正常,最终会在src的同级文件夹里生成一个target文件夹,其中会有一个与项目同名的文件夹,即打包好的免安装软件。

如果想打包成一个独立的exe安装包,需要安装NSIS

4. 坑

有时候明明是可以成功run起来的,但是一打包就失败,多半是模块的问题,毕竟有些模块七七八八很奇怪。

按照命名行的报错提示,缺啥补啥就行了。再不行的话可以在配置文件中把它忽略掉

src/build/settings/base.json { ..., “ hidden_imports”:["模块名"] }

5. 参考链接

官方文档 fbs tutorial 官方文档 Troubleshooting PyQt5+QtDesigner+fbs+python创建桌面程序 用fbs打包PyQt5程序

最新回复(0)