python打包exe pyinstaller 简单使用

源由

最近公司让作了一个小工具,使用python写的,写完以后要求能放在其它电脑上运行,因而就开始寻找方案;
按网上的说法 py2exe已经好久没更新了,资料也很少;
因而就采用pyinstaller来生成exe程序;html

环境python

pyintaller 正式版 支持2.7及3.3-3.5的python版本 工具

pyinstaller 开发版 支持2.7及3.3-3.6版本 字体

我使用的python是3.6.1的,直接使用pip install pyinstaller下载来的会报out of range 的错误,须要安装开发版;网站

 

pyinstaller安装spa

3.6以前的版本 : pip install pyinstaller
3.6+的版本: 命令行

  • 官方网站 下载开发版;
  • 解压,在命令行中 cd 到解压后的源码目录中
  • python setup.py install 完成安装

生成exe文件

pyinstaller [options] XXX.py
在这一步里经常使用的参数以下: -c 命令行程序 -w GUI程序 –icon="path" 生成exe的图标 -F 生成单个EXE文件
默认状况下生成的是单个目录,里面包含一个可执行文件及相关依赖,是分开的;若是使用-F或 –onefile时,将会把全部依赖打包时exe文件中
默认状况下均会包含有命令行,好处是在出错的时候会告诉你哪里出错了,GUI程序在调试完成后能够指定 -w 的参数取消命令行提示
默认状况下的快捷方式图标比较丑,本身选择一个吧
默念状况下生成的是单目录,有利于更新,但看起来比较乱,请自行选择吧调试

修改XXX.spec
若是你没有依赖外部图片、字体等资源时,能够跳过该步骤;
加入依赖的外部资源,下面的例子就是加入外部字体文件(1.ttf和7.ttf):code

  1. a =Analysis(['window.py'],
    pathex=['E:\\pycharm Space\\pyStudy\\window'],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher)
    a.datas +=[('1.ttf','D:\\fonts\\1.ttf','DATA'),('7.ttf','D:\\fonts\\7.ttf','DATA')]

     

生成exe文件
执行 pyinstaller XXX.spec 就能够获得可执行文件了;
若是是单文件模式:生成文件位置为: dist/XXX.exe
若是是单目录模式: 生成文件位置为: dist/XXX/XXX.exehtm

异常处理

若是在执行exe文件出错时,请使用命令行执行,会提示异常信息的~~~ 若是没有异常,可能缘由是在打包时加了 -w 的参数强制使用了GUI模式,把这个参数去掉再试一次

相关文章
相关标签/搜索