PyQt6 利用Pyinstaller打包发布程序

news/2024/5/19 23:24:41 标签: Pyinstaller, PyQt6, pyqt, python

锋哥原创的PyQt6视频教程:

2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计53条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~、第2讲 PyQt6库和工具库QTDesigner安装与配置、第3讲 PyQt6第一个程序HelloWorld实现等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV11C4y1P7fj/PyQt6程序的打包发布,即将.py代码文件打包成可以直接双击执行的.exe文件,在Python中并没有内置可以直接打包程序的模块,而是需要借助第三方模块实现。打包Python程序的第三方模块有很多,其中最常用的就是Pyinstaller

安装Pyinstaller

pip install Pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

打包普通Python程序

普通Python程序指的是完全使用Python内置模块或者对象实现的程序,程序中不包括任何第三方模块。使用Pyinstaller打包普通Python程序的步骤如下。

打开系统的CMD命令窗口,使用cd命令切换到.py文件所在路径(如果.py文件不在系统盘C盘,需要先使用“盘符:”命令来切换盘符),然后输入“pyinstaller -F 文件名.py”命令进行打包

下面是一些常用的命令行选项:

-F:将所有文件打包为一个单独的可执行文件。 -D:将所有文件打包为一个目录,包含可执行文件和所有依赖的文件。 -c:将程序与命令提示符结合在一起,以便在命令提示符下运行。 -d:将调试信息打包进可执行文件中。 –onefile:将所有文件打包为一个单独的可执行文件。 -o:指定输出文件的位置。 -w:打包为窗口文件。 -p DIR, –path=DIR:设置导入路径,从而导入需要的模块

测试代码:

python">"""
    
    作者 : 小锋老师
    官网 : www.python222.com
"""
import time
​
if __name__ == '__main__':
    print("hello Wolrd python222")
    time.sleep(3000)

打包命令:

python">pyinstaller -F helloworld.py

dist目录,可以找到打包生成的 helloworld.exe 可执行文件。

双击运行:

打包PyQt6程序

前面使用“pyinstaller -F”命令可以打包没有第三方模块的普通Python程序,但如果程序中用到了第三方模块,在运行打包后的.exe文件时就会出现找不到相应模块的提示。

我们就以打包PyQt6程序为例进行详细讲解。

PyQt6是一个第三方的模块,可以设计窗口程序,因此在使用pyinstaller命令打包其开发的程序时,需要使用--paths指定PyQt6模块所在的路径;另外,由于是窗口程序,所以在打包时需要使用-w指定打包的是窗口程序,还可以使用--icon指定窗口的图标。

python">pyinstaller --paths PyQt6模块路径 -F -w --icon=窗口图标文件 文件名.py

参数说明:

  • --paths:指定第三方模块的安装路径。

  • -w:表示窗口程序。

  • --icon:可选项,如果设置了窗口图标,则指定相应文件路径;如果没有,则省略。

  • 文件名.py:窗口程序的入口文件。

我们打包以前学习的加法程序。

python">pyinstaller --paths D:\python\python3\Lib\site-packages\PyQt6\Qt6\bin -F -w --icon=favicon32.ico 信号与槽Main.py

双击执行:

执行报错,找不到ui文件。

这里注意,所有的项目资源文件,包括Ui,图片等资源文件,都要放到dist目录下。


http://www.niftyadmin.cn/n/5285790.html

相关文章

力扣-收集足够苹果的最小花园周长[思维+组合数]

题目链接 题意: 给你一个用无限二维网格表示的花园,每一个 整数坐标处都有一棵苹果树。整数坐标 (i, j) 处的苹果树有 |i| |j| 个苹果。 你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 ,且每条边都与两条坐标轴之一平行。 给你一个整…

防火墙双机热备配置步骤

拓朴图: 步骤: 1、交换机分配vlan,分配网关;PC分配IP 2、防火墙划分区域 firewall zone trust add interface G1/0/0 dis zone 3、分配IP,分配服务 service-manage ping permit 4、做安全策略(先允…

RPC(6):RMI实现RPC

1RMI简介 RMI(Remote Method Invocation) 远程方法调用。 RMI是从JDK1.2推出的功能,它可以实现在一个Java应用中可以像调用本地方法一样调用另一个服务器中Java应用(JVM)中的内容。 RMI 是Java语言的远程调用,无法实现跨语言。…

Transfer Learning(迁移学习)

1. 什么是迁移学习 迁移学习(Transfer Learning)是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都…

redis的那些事(二)——布隆过滤器

什么是布隆过滤器? 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。 布隆过滤器实现原理 布隆过滤器是一个bit向量或者说是一个b…

多个舵机的练习

这样你就可以写一个灵活的手指了&#xff1b;当然握力看你的舵机强度 // C code // #include <Servo.h>int ca 0;Servo servo_1; Servo servo_2; Servo servo_3; void setup() {servo_1.attach(2, 500, 2500);servo_2.attach(3, 500, 2500);servo_3.attach(4, 500, 250…

【leetcode100-020】【矩阵】旋转图像

【题干】 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 【思路】 怎么还整上小学奥数题了&#xff08;不是对角翻转水平/垂…

mysql容器中,中文乱码或输入不了中文

1、 进入容器 docker exec -it my-mysql bash2、 容器支持的语言 root41cf84ac4232:/# locale -a C C.UTF-8 POSIX可以看出&#xff0c;容器时支持C.UTF-8 3、 修改容器默认语言 echo "export LANGC.UTF-8" >>/etc/profile && source /etc/profile…