首页 > 解决方案 > 无法将我的 UI 图像添加到 pyinstaller 构建(使用 .spec 文件)

问题描述

我一直在努力让我的功能应用程序将图像包含在其中 - 到目前为止,我只是手动将其包含在“dist”文件夹中并且它工作正常。但是当我使用 --onefile 时,我希望将图像包含在独立应用程序中。

StackOverflow 上有一些类似的答案,但似乎都不起作用,特别是因为它似乎会定期更改。

以下是我的所有最新尝试——我的终端/命令行调用,以及我制作的 .spec 文件(来自各种教程)。请注意,我没有向 python 脚本添加任何内容,并且该图标确实可以正常工作,因此我的文件结构没有错误。任何帮助都会很棒!

命令行:

pyinstaller  --onefile --windowed DragDrop_27.spec

规格文件:

# -*- mode: python -*-

block_cipher = None


a = Analysis(['DragDrop_27.py'],
             pathex=['/Users/orange/PycharmProjects/imageMerge_01'],
             binaries=[],
         datas=[('bgimage.png', '.'), ('bgimageover.png', '.'), ('bgimagehover.png', '.'), ('bgimageprogress.png', '.'), ('play_logo.png', '.'), ('play_logoover.png', '.')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
a.datas += [('bgimage.png', '.','DATA'), ('bgimageover.png', '.','DATA'), ('bgimagehover.png', '.','DATA'), ('bgimageprogress.png', '.','DATA'), ('play_logo.png', '.','DATA'), ('play_logoover.png', '.','DATA')]
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='DragDrop_27',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=False )
app = BUNDLE(exe,
             name='DragDrop_27.app',
             icon='myicon.icns',
             bundle_identifier=None)

标签: pythonexepyinstallerspecifications

解决方案


老实说,我认为不可能有独立版本的图像,除非它是严格供个人使用的。我花了至少 4 个小时试图解决同样的问题,但没有奏效。您可以使用 .ico 文件添加图像并将其与 --onefile 一起使用,但除非您将图像文件单独提供给其他人,否则您将无法让其他人使用它。

pyinstaller --onefile --icon='Pig.ico' AnimalFacts.py

推荐阅读