将Python文件打包成.EXE可执行文件的方法


Posted in Python onAugust 11, 2019

利用Python写了一个小脚本想要传给使用Windows但没有装Python的朋友执行,这时候就可以利用将档案包装成exe档案,让没有Python的朋友也可以执行。本篇将介绍利用套件「PyInstaller」制作exe档。

1|0安装方法

#安装pyinstaller
pip install pyinstaller
#安装依赖
pip install pywin32-ctypes

2|0常用参数介绍

pyinstaller -h来查看参数

-F打包成一个exe文件

-i图标路径

-w使用视窗,无控制台

-c使用控制台,无视窗

-D创建一个目录,包含exe以及其他一些依赖性文件

编译文件时,我们通常使用如下命令:

pyinstaller -F -w -i favo.ico main.py

3|0静态文件

对于python所依赖的图片,config.yaml等静态文件,pyinstall不会自动打包,需要手动在main.py(所需要打包的入口文件)的相同目录中寻找main.spec,修改datas依赖,才可以自动打包到exe的相同目录下,然后执行即可

datas是一个数组,每个子项是一个tuple,其中tuple的第一个参数是你要打包的源路径,第二个参数是打包后的名字

# -*- mode: python -*-

block_cipher = None

a = Analysis(['ui.py'],
pathex=['C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test'],
binaries=[],
datas=[('C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test\\images','images'),('C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test\\question.yaml','question.yaml')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)

然后执行:

pyinstaller -F main.spec

4|0示例

如下图所示,我们编写一个输出helow pyinstaller的Python程序,并利用input()使程序可以暂时停在输出画面。

print('helow pyinstaller')
input('please wait:')

编译python为exe,编译过程中会自动安装相关依赖

pyinstaller -F hello.py

编译过程中会产生如下输出:

…
6942 INFO: checking PY
6944 INFO: Building because toc changed
6944 INFO: Building PYZ(ZlibArchive)C:\Users\user\Desktop\test\build\test\PYZ-00.pyz
7559 INFO: Building PYZ(ZlibArchive)C:\Users\user\Desktop\test\build\test\PYZ-00.pyz completed successfully.
7568 INFO: checking PKG
7569 INFO: Building because toc changed
7569 INFO: Building PKG(CArchive)PKG-00.pkg
9407 INFO: Building PKG(CArchive)PKG-00.pkg completed successfully.
9409 INFO: Bootloader c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe9409 INFO: checking EXE
9411 INFO: Building because toc changed
9411 INFO: Building EXE from EXE-00.toc
9412 INFO: Appending archive to EXE C:\Users\user\Desktop\test\dist\test.exe
9455 INFO: Building EXE from EXE-00.toc completed successfully.

通过输出可以看出pyinstaller进行了如下操作:

会先建立一个hello.spec

建立「build」文件夹

建立log纪录档与工作档案于文件夹build中

建立「dist」文件夹

建立执行档(.exe)在「dist」文件夹

4|1注意事项

执行档案可在win8/win10,64位的电脑运行,但win7 x64和其余所有32位失败,会提示不兼容,若要能32位与64位皆可运行,就要在Python 32位的环境下编译PyInstaller打包exe,才能在32位与64位成功。

Python 相关文章推荐
在Python中操作文件之read()方法的使用教程
May 24 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
python的re正则表达式实例代码
Jan 24 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
pytorch SENet实现案例
Jun 24 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
python Django框架快速入门教程(后台管理)
Jul 21 Python
python多线程同步实例教程
Aug 11 #Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 #Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 #Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 #Python
python3实现带多张图片、附件的邮件发送
Aug 10 #Python
python实现邮件自动发送
Aug 10 #Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 #Python
You might like
全国FM电台频率大全 - 6 辽宁省
2020/03/11 无线电
神族 Protoss 历史背景
2020/03/14 星际争霸
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
2017/02/04 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
jQuery select的操作实现代码
2009/05/06 Javascript
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
跟老齐学Python之编写类之三子类
2014/10/11 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
python超时重新请求解决方案
2019/10/21 Python
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
护理学应聘自荐书范文
2014/02/05 职场文书
学习决心书
2014/03/11 职场文书
yy婚礼主持词
2014/03/14 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
实习证明模板
2015/06/16 职场文书
药房管理制度范本
2015/08/06 职场文书
2016教师节感恩话语
2015/12/09 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers