最近公司让作了一个小工具,使用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+的版本: 命令行
pyinstaller [options] XXX.py
在这一步里经常使用的参数以下: -c 命令行程序 -w GUI程序 –icon="path" 生成exe的图标 -F 生成单个EXE文件
默认状况下生成的是单个目录,里面包含一个可执行文件及相关依赖,是分开的;若是使用-F或 –onefile时,将会把全部依赖打包时exe文件中
默认状况下均会包含有命令行,好处是在出错的时候会告诉你哪里出错了,GUI程序在调试完成后能够指定 -w 的参数取消命令行提示
默认状况下的快捷方式图标比较丑,本身选择一个吧
默念状况下生成的是单目录,有利于更新,但看起来比较乱,请自行选择吧调试
修改XXX.spec
若是你没有依赖外部图片、字体等资源时,能够跳过该步骤;
加入依赖的外部资源,下面的例子就是加入外部字体文件(1.ttf和7.ttf):code
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模式,把这个参数去掉再试一次