将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正则表达式判断字符串是否是全部小写示例
Dec 25 Python
Python中if __name__ == "__main__"详细解释
Oct 21 Python
利用Python实现图书超期提醒
Aug 02 Python
python的unittest测试类代码实例
Dec 07 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
Python统计分析模块statistics用法示例
Sep 06 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
Python使用configparser读取ini配置文件
May 25 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
Python中的xlrd模块使用整理
Jun 15 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简单静态页生成过程
2008/03/27 PHP
php连接mysql数据库代码
2009/03/10 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
深入理解Python中装饰器的用法
2016/06/28 Python
Python实现一个简单的验证码程序
2017/11/03 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
Ado与Ado.net的相同与不同
2014/12/08 面试题
学习雷锋精神心得体会范文
2014/03/12 职场文书
团队拓展活动总结
2014/08/27 职场文书
工作保证书怎么写
2015/02/28 职场文书
工作表现证明
2015/06/15 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
Vue如何清空对象
2022/03/03 Vue.js
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技
vue组件vue-esign实现电子签名
2022/04/21 Vue.js
MySQL数据库简介与基本操作
2022/05/30 MySQL
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL