将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入门及进阶笔记 Python 内置函数小结
Aug 09 Python
Python实现生成简单的Makefile文件代码示例
Mar 10 Python
Python获取单个程序CPU使用情况趋势图
Mar 10 Python
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
通过Python实现自动填写调查问卷
Sep 06 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
python+mysql实现学生信息查询系统
Feb 21 Python
Python读写文件基础知识点
Jun 10 Python
Django 迁移、操作数据库的方法
Aug 02 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
教你用Python matplotlib库制作简单的动画
Jun 11 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
html中select语句读取mysql表中内容
2006/10/09 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
关于redux-saga中take使用方法详解
2018/02/27 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
python实现360皮肤按钮控件示例
2014/02/21 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
python实现猜数字游戏
2020/03/25 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
Python实现自动装机功能案例分析
2020/10/22 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
盛大二次面试题
2016/11/18 面试题
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
最新茶叶店创业计划书
2014/01/14 职场文书
一帮一活动总结
2014/05/08 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
护士医德医风自我评价
2014/09/15 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang