提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
最近做项目遇到了一些python使用pyinstaller多文件打包问题,然后进行总结及解决方法
一、python打包步骤
利用pyinstaller打包
- 单文件打包
- 安装pyinstaller,安装指令:
pip install pyinstaller
- 输入打包命令:
pyinstaller -F xxx.py
(xxx.py,打包的文件) - 打包成功后项目中新增dist文件夹,进入dist文件,点击运行打包好的exe程序
- 安装pyinstaller,安装指令:
- 多文件打包,使用spec方式
2.1 创建spec文件,.打开终端进入项目路径下,输入指令:pyinstaller -F start_menu.py
(start_menu是我项目的主文件),回车,程序结束后,发现当前目录下生成两个文件夹(bulid、dist)和一个文件start_menu.spec,现在删除两个文件夹,只保留start_menu.spec文件。
2.2 编辑spec文件
2.3 编辑好之后,执行start_menu.spec文件,在项目的路径下输入指令:# -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis(['start_menu.py','check_default_speedup.py', 'check_server_os.py', 'check_speedup.py'],#此项目中所有的python脚本 pathex=[ 'D:\\Project\\python\\xxxTool'],#项目绝对路径 binaries=[], “”“ datas此列表存放所有的资源文件,每个文件是一个二元组元素 格式为:datas=[('fonts\\font.ttf', 'fonts')],这样代表的是将fonts文件夹里面的font.ttf载入到虚拟目录中 多个资源文件就用逗号隔开,例如datas=[('libs','libs'),('image','image')] 如果是根目录下的文件则应该为datas=[('bitbug_favicon.ico','.')],.代表的是根目录文件 ”“” datas=[], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='start_menu', #打包程序的名字 debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, icon='C:\\Users\\Administrator\\Desktop\\bitbug_favicon.ico',# 生成的exe文件图标,需要完整路径 console=True )# 此处console=True表示,打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,建议是关掉,有的影响使用,改为False即可
pyinstaller -F start_menu.spec
2.4 打包成功后项目中新增dist文件夹,进入dist文件,点击运行打包好的exe程序
二、所遇到的问题
1.多文件打包时,执行start_menu.spec文件,提示makespec options not valid when a .spec file is given
原因:因为命令中多了-F
解决方法:
- 将-F删除,改成
pyinstaller start_menu.spec
- 换pyinstaller版本,目前我用5.1有问题,我换成4.10就没问题了
总结
记录一下这几天出现的问题,欢迎指正