【Python】在vscode利用pyinstaller中的.spec文件把py项目打包为.exe实现非py环境下使用的操作步骤

发布于:2025-05-19 ⋅ 阅读:(21) ⋅ 点赞:(0)

【需要打包的项目结构-简单】

【打包步骤】

【1-将图标以.ico的格式保存在项目中】

可以用.jpg或.png的图像进行重名,注意要和项目在同一个路径下

【2-创建并填写main.sepc文件】

在终端输入以下指令自动创建main.sepc文件,会自动生成标准的文件

pyi-makespec --onefile --noconsoleo main.py

 然后将.sepc文件放于项目外部

main.sepc文件需要修改的内容大致为:

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

block_cipher = None

a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=['tkinter'],  # 必须添加的隐藏依赖
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)

# ✅ 关键修复点:确保pyz变量正确定义
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,  # ✅ 这里引用的pyz必须已定义
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='BoeMedicalTool',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    icon='medical.ico',  # 图标路径
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

 本项目的main.spec文件如下,需要注意的是main.py和icon图标需要输入其所在的路径,其他的可以不用手动修改,保持默认

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


a = Analysis(
    ['D:\\work and document\\medical_report_tool\\main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=['tkinter'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='ReportTool',
    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,
    icon=['D:\\work and document\\medical_report_tool\\tf.ico'],
)
 

【3-保存并开始打包】 

保存编辑好的.spec文件,在终端输入执行命令开始打包

pyinstaller main.spec

如果在打包过程中出现报错,可升级pyinstaller版本再执行一次上述命令打包

pip install --upgrade pyinstaller tuna.tsinghua.edu.cn/simple

打包过程完整日志:

随后在项目所在的同路径形成build和dist文件夹

build文件中为打包的关键部分

dist文件夹中保存.exe执行的应用程序,用户使用的时候双击.exe即可运行项目

为防止在非python环境中的电脑无法使用,本文将build和dist文件夹均作为软件的一部分进行压缩,发给他人使用,经过测试后,发现这样的方法可行,用户可顺利使用,该交付方法最把稳。

交付时必须打包的内容:


网站公告

今日签到

点亮在社区的每一天
去签到