[Python] Pyinstaller将python代码打包成exe | Pyinstaller错误合集

常用命令

# 打包成单个文件夹
pyinstaller my_excel.py #完成后在dist文件夹下
# 打包为单个文件 -F
pyinstaller -F my_excel.py
# 不要命令行 -w
pyinstaller -F -w my_excel.py
# 换图标
pyinstaller -F -w -i 图标路径(路径要\\) my_excel.py

在pycharm中配置

Program:C:\Python\Python35\Scripts\pyinstaller.exe
Arguments: --hidden-import=queue -w -F $FileName$
Working directory: $FileDir$

注意

  1. 打包为单个文件(启动慢):创建_MEIxxxx临时文件夹(%APPDATA%\local\Temp文件夹下),由bootloader复制文件,运行结束后自动删除,意外关闭程序,临时文件无法删除
  2. 可以同时运行多个打包后的单个文件,各个程序之间不共享资源,耗费存储空间
  3. 严禁赋予打包后的程序管理员权限,只使用普通权限运行,以防bootloader复制共享库期间,遭到代码注入共计后,破坏系统
  4. 打包后的程序只能在英文路径下运行(python2.7)
  5. 程序本身必须用英文命名(Python2.7)

错误合集

failed to execute script

【报错】pyqt5工程,运行打包结果exe,报错failed to execute script
【原因】代码有错误:编译成exe的时候打开命令行 -->调试正确后再去掉命令行

引用本地py文件问题:no module named

【背景】代码在pycharm中运行正常,打包成exe后报错no module named
【工程情况】
在这里插入图片描述
【修改成】运行成功
在这里插入图片描述

为exe添加图标出错

【加入图标】执行命令pyinstaller -F -w -i D:\\mycode\\icon.png mainfile.py
【报错】

  File "c:\python37\lib\site-packages\PyInstaller\building\build_main.py", line 784, in build
    exec(text, spec_namespace)
  File "<string>", line 32, in <module>
  File "c:\python37\lib\site-packages\PyInstaller\building\api.py", line 433, in __init__
    self.__postinit__()
  File "c:\python37\lib\site-packages\PyInstaller\building\datastruct.py", line 158, in __postinit__
    self.assemble()
  File "c:\python37\lib\site-packages\PyInstaller\building\api.py", line 522, in assemble
    icon.CopyIcons(tmpnm, self.icon)
  File "c:\python37\lib\site-packages\PyInstaller\utils\win32\icon.py", line 190, in CopyIcons
    except win32api.error as W32E:
AttributeError: module 'win32ctypes.pywin32.win32api' has no attribute 'error'

【原因】

  1. 图标的大小严格限制(32*32):在这个网址进行转换 https://www.easyicon.net/covert/
  2. 图标的颜色严格限制:256,真彩色是不行的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geodoer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值