python pyinstaller spec文件 打包多个python文件为exe应用程序

工作中遇到要将做好的项目打包成应用程序,放在一个裸环境下运行,这就要求将项目相关的第三方库或者包打包,使得应用程序在脱离原依赖环境下,可以直接运行。这里记录一下使用spec文件打包的过程。

  1. 使用pyinstaller 单个文件打包

# 首先安装pyinstaller
pip install pyinstaller
# 执行命名 即可完成打包,生成文件名.exe程序
pyinstaller -F  文件名.py
  1. 使用pyinstaller 多个文件打包

这里先看下项目文件结构:

python pyinstaller spec文件 打包多个python文件为exe应用程序_第1张图片

# pyinstaller安装方法同上
# 假设以测试主程序 为打包程序时候的主程序,其他py文件为可引用资源
# 执行如下命令  生成spec文件
pyi-makespec -F PaserAdapter_Test.py 

编辑PaserAdapter_Test.spec文件

# spec文件格式如下:
# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['ParseAdapter_Test.py','ParseAdapter.py'], # 程序中的py文件
    pathex=[],
    binaries=[],
    datas=[('templates','.'),('ParseAdapter.conf','.')], # 资源文件,以元组形式组成列表
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    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,
    [],
    exclude_binaries=True,
    name='ParseAdapter_Test',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='ParseAdapter_Test',
)

执行打包命令(可指定输出程序存放的路径)

假设使用默认路径
# 使用默认输出路径,直接执行命令
pyinstaller PaserAdapter_Test.spec 
指定程序存放路径
# 指定文件输出到文件夹parseadapter下,且exe文件存在dist下,其他存在build下
pyinstaller PaserAdapter_Test.spec 

如果在windows系统打包,则dist下会有对应的.exe程序,此时可脱离其他源文件独自执行exe文件。

更全面的知识可以参考这篇文章,很不错,学习到很多

你可能感兴趣的:(python)