pyinstaller打包笔记
pyinstaller打包笔记

一般流程

使用命令把代码直接打包成一个可执行文件

pyinstaller --windowed --onefile mutilprocess_ean13_non_empty_lining_gui_manager.py

手动添加依赖(以牺牲体积为前提,最方便的方法)

出现问题的话可以使用

pyinstaller mutilprocess_ean13_non_empty_lining_gui_manager.py

这样能够直观的查看_internal文件夹里打包了什么,没打包什么

运行了第一次命令后,会自动生成一个同名的.spec文件,在这个例子中是mutilprocess_ean13_non_empty_lining_gui_manager.spec

修改spec文件,添加缺失的依赖,我这里直接添加整个库进去了,这样最快速最暴力,缺点是体积大

# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
    ['mutilprocess_ean13_gui_manager.py'],
    pathex=[],
    binaries=[],
    datas=[(r'C:\Users\Administrator\PycharmProjects\货架\arial.ttf',  'fonts'), (r'C:\Users\Administrator\PycharmProjects\货架\arialbd.ttf',  'fonts'), (r'C:\Users\Administrator\PycharmProjects\货架\DejaVuSans.ttf',  'fonts'), (r'C:\Users\Administrator\PycharmProjects\货架\ariblk.ttf',  'fonts'),(r'C:\Users\Administrator\PycharmProjects\货架\.venv\Lib\site-packages\tkinterdnd2', 'tkinterdnd2'),(r'C:\Users\Administrator\PycharmProjects\货架\.venv\Lib\site-packages\pylibdmtx', 'pylibdmtx'),(r'C:\Users\Administrator\PycharmProjects\货架\.venv\Lib\site-packages\reportlab', 'reportlab')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='mutilprocess_ean13_gui_manager',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

添加完依赖后,重新生成文件

pyinstaller --noconfirm mutilprocess_ean13_non_empty_lining_gui_manager.spec

最后修改于 2025-05-09