Я использовал следующий код, и он работал отлично.
import sys
from os.path import join, abspath
def resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return join(sys._MEIPASS, relative_path)
return join(abspath("."), relative_path)
Добавьте следующий код в spec
file:
a.datas += [ ('back.png', 'icon/back.png', 'DATA')]
где 'back.png'
- мое изображениепуть будет сохранен в пакете pyinstaller exe, и 'icon/back.png'
- это когда я помещаю свой файл изображения в папку icon
, находящуюся в данный момент перед упаковкой.
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['C:\\Users\\User\\Documents\\GitHub\\Mypath'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=['mkl','whl'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.datas += [ ('back.png', 'icon/back.png', 'DATA')]
a.datas += [ ('main.ico', 'icon/main.ico', 'DATA')]
a.datas += [ ('folder.png', 'icon/folder.png', 'DATA')]
a.datas += [ ('download.png', 'icon/download.png', 'DATA')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True , icon='icon\\main.ico')
Затем вы можете назвать ваше изображение как resource_path('download.png')