常用命令
# 打包成单个文件夹
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$
注意
- 打包为单个文件(启动慢):创建_MEIxxxx临时文件夹(%APPDATA%\local\Temp文件夹下),由bootloader复制文件,运行结束后自动删除,意外关闭程序,临时文件无法删除
- 可以同时运行多个打包后的单个文件,各个程序之间不共享资源,耗费存储空间
- 严禁赋予打包后的程序管理员权限,只使用普通权限运行,以防bootloader复制共享库期间,遭到代码注入共计后,破坏系统
- 打包后的程序只能在英文路径下运行(python2.7)
- 程序本身必须用英文命名(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'
【原因】
- 图标的大小严格限制(32*32):在这个网址进行转换 https://www.easyicon.net/covert/
- 图标的颜色严格限制:256,真彩色是不行的