将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 yield 小结和实例
Apr 25 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
python清除指定目录内所有文件中script的方法
Jun 30 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
python3获取当前目录的实现方法
Jul 29 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
如何基于python实现不邻接植花
May 01 Python
使用Python构造hive insert语句说明
Jun 06 Python
AI:如何训练机器学习的模型
Apr 16 Python
python 字典和列表嵌套用法详解
Jun 29 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 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编写注册后Email激活验证的实例代码
2013/03/11 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
javascript回到顶部特效
2016/07/30 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python编程中装饰器的使用示例解析
2016/06/20 Python
Python异常处理操作实例详解
2018/05/10 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
美国时尚女装在线:Missguided
2016/12/03 全球购物
大学生职业生涯规划书模板
2014/01/18 职场文书
三爱活动实施方案
2014/03/19 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
教育读书笔记
2015/07/02 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
浅谈python数据类型及其操作
2021/05/25 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
详解Python自动化之文件自动化处理
2021/06/21 Python
Python的property属性详细讲解
2022/04/11 Python