pyinstaller 生成一个可执行文件时出现问题(它只想生成一个文件夹)

问题描述 投票:0回答:1

我有这个 .spec 文件,我用它来将 python 项目转换为可执行文件,该命令工作得很好,但是该命令生成一个包含很多文件(其中的可执行文件)的文件夹,但我希望它生成一个独立的可执行文件文件

命令:

pyinstaller main.spec

main.spec 文件:

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None

a = Analysis(
    ['main.py', 'ui_interface.py', 'utilities.py', 'data.py'],
    pathex=[],
    binaries=[],
    datas=[('MainMenu.ui', '.'), ('style.json', '.'), ('resources_rc.py', '.')],
    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='D&PO UIB',  # Set the name of the executable to "D&PO UIB"
    debug=True,  # Enable debug output
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,  # Set console to False to remove the console window
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    onefile=True,  # Generate a single executable file  # Add the path to your icon file
)

coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],  # Include the upx_exclude parameter with an empty list
    name='D&PO UIB',  # Set the name of the executable to "D&PO UIB"
)

正如您所看到的,onefile 参数设置为 True 但仍然没有任何结果,我尝试更改很多参数,并且尝试了 chatgbt 请求的很多方法,但没有一个起作用,它不断生成一个包含大量文件的文件夹。

python pyinstaller executable
1个回答
1
投票

简单地摆脱你的

COLLECT(...)

声明。这应该可以解决问题。

另请参阅此处 https://pyinstaller.org/en/stable/spec-files.html#spec-file-operation

“COLLECT 的实例从所有其他部分创建输出文件夹。 在单文件模式下,不会调用 COLLECT,EXE 实例会接收所有脚本、模块和二进制文件。”

编辑:

我的猜测:将此行设置为 False (或干脆删除它)以保留二进制文件

exclude_binaries=False

因为排除了所有二进制文件,所以路径上没有 python39.dll。

© www.soinside.com 2019 - 2024. All rights reserved.