将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中类的继承代码实例
Oct 28 Python
Python 字典dict使用介绍
Nov 30 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
numpy中矩阵合并的实例
Jun 15 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 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
PHP临时文件的安全性分析
2014/07/04 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Python创建字典的八种方式
2019/02/27 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
Python 复平面绘图实例
2019/11/21 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
初中物理教学反思
2014/01/14 职场文书
安全责任书范文
2014/03/12 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
雷锋电影观后感
2015/06/10 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python