将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之??碌某?? target=
Sep 12 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
Sep 19 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
python3读取csv和xlsx文件的实例
Jun 22 Python
在Python中实现替换字符串中的子串的示例
Oct 31 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
Python统计分析模块statistics用法示例
Sep 06 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
Python中断多重循环的几种方式详解
Feb 10 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
Jun 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
Python txt文件如何转换成字典
2020/11/03 Python
python tqdm库的使用
2020/11/30 Python
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
毕业生精彩的自我评价分享
2013/10/06 职场文书
电气自动化自荐信
2013/10/10 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
golang slice元素去重操作
2021/04/30 Golang
Python 数据可视化之Bokeh详解
2021/11/02 Python
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技