分享交流
合作共赢!

Python文档打包为exe格式方法总结

将编写的Python文档打包为exe格式文件

1.安装pyinstaller和pywin32包文件

2.创建启动文件

pyi-makespec ascm_tools.spec

启动文件示例:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['ascm_tools.py'],
             pathex=['D:\\mydata\\Development\\Python\\MyProjects\\ascm_gov'],
             binaries=[],
             datas=[('images\\logo.png','images\\logo.png')],
             hiddenimports=['queue'],
             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='ascm_tools',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=False,icon='favicon.ico' )

3.用pyinstaller命令打包

命令格式:

pyinstaller [项目启动文件]

其他参数(按需求选择):

  • -F   表示在 dist 文件夹下只生成单个可执行文件(内部包含所有依赖),不加默认会在 dist 生成一大堆依赖文件+可执行文件。
  • -D   与 -F 相反用法
  • -W  表示去掉控制台窗口,如果你的程序是有界面的,可以不写这个参数。但是测试情况下建议先加上这个参数,因为如果打包不成功,运行时报错信息会在控制台上输出,没有控制台就看不到报错信息。
  • -c   表示去掉窗框,使用控制台
  • -p    表示自己定义需要加载的类路径,项目中包含多个自建模块的时候需要加上 -p aaa.py -p bbb.py -p ccc.py
  • -i     表示可执行文件的图标,后面跟图标的路径
  • –hidden-import  后面跟模块名如 queue,用于告诉打包程序某个模块我用不着你不用打包进去

打包完毕后在 dist 文件夹下双击项目启动文件就可以了

示例:

pyinstaller -F -w ascm_tools.spec
有时候加了-w打包后还是有黑屏,可以尝试如下命令:
pyinstaller -F -w -i favicon.ico 24h_Schedule.py --noconsole

pyinstaller报错解决

1.执行打包命令时报错  IndexError: tuple index out of range

  • 原因:官网目前的版本是 3.2.1 只支持到 python3.5 ,高版本的 python 尚不支持,
  • 解决方法:网上有大神提供了完善版的代码——官网源码里有 https://github.com/pyinstaller/pyinstaller 替换你 python 目录下的 \Lib\site-packages\PyInstaller 即可 这样就支持python3.6了 不过是开发版,可能还不完善。

作者建议最好还是用虚拟环境下的 python3.5 进行打包。


2.执行打包命令时报错 ImportError: No module named ‘queue’

  • 原因:尚不清楚
  • 解决方法:如果该模块你用不到,可以在执行打包命令时用 –hidden-import 不打包进去。如果程序中需要该模块,在主文件最上面写上 improt queue

3.打包命令执行成功,但双击可执行程序弹出报错窗口failed to excute script xxx

  • 原因:打包时内部缺少了某个依赖,这时需要看看控制台打印了什么报错信息,打包时加了 -w 参数的请再打包一次记得去掉 -w
  • 现象:基本都是在控制台上发现报错 No module named ‘xxxxx’,如 No module named ‘queue’ 或者 ModuleNotFoundError: No module named ‘PyQt5.sip’
  • 解决方法:同2,如果该模块你用不到,可以在执行打包命令时用 –hidden-import 不打包进去。如果程序中需要该模块,在主文件最上面写上 improt xxxxx。如 import queue 或 import PyQt5.sip
赞(3) 打赏
未经允许不得转载:琼杰笔记 » Python文档打包为exe格式方法总结

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏