为了实现程序在没有python环境的机器上也可以运行。pyinstaller模块作为python的一个第三方模块,使用它可以将python程序打包为可执行文件。
pyinstaller的安装方式可通过:
pip installer pyinstaller
通常打包程序有两种情况:
情况一,打包一个python脚本文件;
情况二,打包一个python项目程序(包含多个文件夹、py文件,以及相关资源文件)
打包环境
- win10,64位- python3.6- pyInstaller提供了两种不同的打包操作方式,可以实现上述两种情况下的打包需求。
打包一个py脚本程序
对于只有一个python脚本的简单程序,打包操作很方便,直接使用命令行的方式,输入相关指令即可。
对于一个小程序(temp.py),如下:
import csv
'''
用csv模块写csv文件,
主要用到writerow和writerows这两个方法,
前者是写入一行,后者是写入多行。
'''
headers = ['name', 'age', 'honey', 'happy']
row_1 = ['小明', '17']
row_2 = ['小刚', '15']
row_3 = ['小元', '21']
row_4 = ['小雨', '23']
with open("data.csv", "a+", encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(headers)
# 写入一行
writer.writerow([row_1, row_2, row_3, row_4])
首先,打开终端cmd, 进入temp.py文件所在的路径,输入指令:pyinstaller -F temp.py
打包结束后,将在当前目录下生成两个文件夹(bulid、dist)和一个文件temp.spec
,现在不需要理会文件夹bulid
和文件temp.spec
我们需要的打包后的可执行文件在文件夹dist
中,双击即可运行,实现打包。
注意:如果想修改可执行文件的图标,使用指令:pyinstaller -i icon.ico -F temp.py
打包结束后,在dist文件夹下降出现temp.exe。你可能会发现它的图标并不是你想要的,这没有关系,你将它重命名或者拷贝到其他地方,你会发现它的图标立刻变成你期待的样子,祝你好运。
打包py项目
对于常用到的py项目程序,包含许多文件夹和py文件,以及配套的资源文件。这种情况下在终端中使用指令的方式打包程序本身也是可以实现的,但是此时打包操作就变得非常复杂。一个简单的打包方式,就是通过pyinstaller提供的spec文件
实现程序打包。
下面通过一个基于python
实现的项目的打包流程。
该项目包含六个文件夹,其中:bin、conf、core
包含所有的python脚本文件,项目入口程序在bin\
XXXX.py
,所有音频文件在audios文件夹下,所有的字体文件在fonts文件夹下,所有的图片文件在images文件夹下。
第一步:打开终端进入项目路径下,输入指令:pyinstaller -F bin\XXXX.py
,回车,程序结束后,发现当前目录下生成两个文件夹(bulid、dist)和一个文件XXXX.spec
,现在删除两个文件夹,只保留XXXX.spec
文件。
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['Display.py'],# 此列表存放项目设计的所有python脚本文件
pathex=['E:\\MyCode\\', 'E:\\MyCode\\Display'],# 此列表为项目绝对路径
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='Display',# 打包程序的名字
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
upx_exclude=[],
runtime_tmpdir=None,
console=True,# 打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行
icon='D:\\hahah.ico'# 如果想要修改程序图标,使用在EXE()中加入 icon='绝对路径',一定要注意设置程序图标是.ico格式文件(16*16)
)
- 第二步:执行
XXXX.spec
文件。项目路径下输入指令:pyinstaller -F XXXX.spec
,
回车,程序结束后,打包结束完成。