【转载】Pyinstaller打包过程生成的.spec文件

原文章

为了实现程序在没有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
    回车,程序结束后,打包结束完成。

你可能感兴趣的:(python,开发语言)