将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使用7z解压软件备份文件脚本分享
Feb 21 Python
举例讲解Python中is和id的用法
Apr 03 Python
详解Python中用于计算指数的exp()方法
May 14 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
Python 爬虫模拟登陆知乎
Sep 23 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
Python绘制3d螺旋曲线图实例代码
Dec 20 Python
Python之时间和日期使用小结
Feb 14 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
Python3 JSON编码解码方法详解
Sep 06 Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 Python
scrapy-splash简单使用详解
Feb 21 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 Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
vue实现计算器功能
2020/02/22 Javascript
详解Django中间件的5种自定义方法
2018/07/26 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
python 调试冷知识(小结)
2019/11/11 Python
Pytorch之Variable的用法
2019/12/31 Python
通俗讲解python 装饰器
2020/09/07 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
行政部岗位职责范本
2014/03/13 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
购房个人委托书范本
2014/10/11 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
2015年调度员工作总结
2015/04/30 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript