首先,大多数的教程都是在cmd中安装Pyinstaller
使用安装命令:pip install pyinstaller;使用清华大学镜像源加快速度:
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
结果如下:
C:\Users\little>pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pyinstaller in d:\pycharm\anaconda\lib\site-packages (5.4.1)
Requirement already satisfied: setuptools in d:\pycharm\anaconda\lib\site-packages (from pyinstaller) (58.0.4)
Requirement already satisfied: altgraph in d:\pycharm\anaconda\lib\site-packages (from pyinstaller) (0.17.2)
Requirement already satisfied: pywin32-ctypes>=0.2.0 in d:\pycharm\anaconda\lib\site-packages (from pyinstaller) (0.2.0)
Requirement already satisfied: pefile>=2022.5.30 in d:\pycharm\anaconda\lib\site-packages (from pyinstaller) (2022.5.30)
Requirement already satisfied: pyinstaller-hooks-contrib>=2021.4 in d:\pycharm\anaconda\lib\site-packages (from pyinstaller) (2022.10)
Requirement already satisfied: future in d:\pycharm\anaconda\lib\site-packages (from pefile>=2022.5.30->pyinstaller) (0.18.2)
显示已经安装过了
其次,使用Pyinstaller对自己的项目进行打包成exe
单个文件打包
pyinstaller -F -w -i xxx.ico main.py --noconsole
多个文件打包
pyinstaller [主文件] -p [其他文件1] -p [其他文件2] --hidden-import [自建模块1] --hidden-import [自建模块2]
常用参数 含义
-i 或 -icon 生成icon
-F 创建一个绑定的可执行文件
-w 使用窗口,无控制台
-C 使用控制台,无窗口
-D 创建一个包含可执行文件的单文件夹包(默认情况下)
-n 文件名
例如我的项目:
correction.py | 主运行程序 |
add_dialog.py | 主界面跳转的dialog界面程序 |
cubic_spline.py | 主程序的一个调用程序 |
correction.ui | 主界面 |
add_dialog.ui | dialog界面 |
pyinstaller -F -w correction.py -p add_dialog.py -p cubic_spline.py --hidden-import correction --hidden-import add_dialog --hidden-import cubic_spline
但是这样生成的exe 会出现闪退以及因缺少import而不能运行的问题
我的方法
1、在pycharm中的terminal中pip install pyinstaller
2、在pycharm中的terminal中 pyinstaller -F -w correction.py -p add_dialog.py -p cubic_spline.py --hidden-import correction --hidden-import add_dialog --hidden-import cubic_spline
successfully之后 ,所在项目的文件夹下会生成build、dist两个文件夹xxx.spec文件
3、打开项目所在文件夹下,刚生成的dist文件夹。运行里面的exe文件即可。
PS: 由于我的背景和图标是在correction.py 下的主界面程序中添加的,所以不在pyinstaller中使用--icon
# 设置背景图片
MainWindow.setStyleSheet('#MainWindow{border-image:url(background.jpg);}')
# 设置图标
MainWindow.setWindowIcon(QtGui.QIcon('logo.ico'))