在 PyInstaller onefile 可执行文件中包含图像
Including an image in a PyInstaller onefile executable
我正在尝试使用 PyInstaller 的 onefile 选项制作可执行文件。我尝试了很多很多不同的方法来修复它,但我完全被卡住了。具体来说,我试过了
。我让我的规范文件看起来像他们的,并包含了 resource_path() 函数。但是,我收到以下错误:
File "PIL/Image.py", line 2953, in open
FileNotFoundError: [Errno 2] No such file or directory'/var/folders/t5/vkb5xkjs3517p5jlfkbj89vm0000gp/T/_MEIdOLb1O/logo.png'
所以我不确定我的问题是出在MEIPASS 部分,还是出在PIL 上。另一个奇怪的部分是,在此错误之前,我的代码包括:
self.iconbitmap(r"[workspace]/src/icon.ico")
这不会产生任何问题,即使这两个文件(icon.ico、logo.png)与我转换为可执行文件的程序位于同一文件夹中。如果它有所作为,我在 Mac.
上 运行
我目前使用的指令:
pyinstaller --noconfirm --onefile --console "[workspace]/src/gui.py" gui.spec
和我的规范文件:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['gui.py'],
pathex=['/Users/Freddie/Impruvon/guiwebscraperproject/venv/src'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
for d in a.datas:
if 'pyconfig' in d[0]:
a.datas.remove(d)
break
a.datas += [('logo.png','/Users/Freddie/Impruvon/guiwebscraperproject/venv/src/logo.png', 'Data')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='gui',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None )
好吧,我确定我已经尝试过了,但是通过从 添加资源路径方法,但不更改规范文件,此命令有效:
pyinstaller --noconfirm --onefile --console --add-data "[workspace]/src/logo.png:." "[workspace]/src/gui.py"
我正在尝试使用 PyInstaller 的 onefile 选项制作可执行文件。我尝试了很多很多不同的方法来修复它,但我完全被卡住了。具体来说,我试过了
File "PIL/Image.py", line 2953, in open
FileNotFoundError: [Errno 2] No such file or directory'/var/folders/t5/vkb5xkjs3517p5jlfkbj89vm0000gp/T/_MEIdOLb1O/logo.png'
所以我不确定我的问题是出在MEIPASS 部分,还是出在PIL 上。另一个奇怪的部分是,在此错误之前,我的代码包括:
self.iconbitmap(r"[workspace]/src/icon.ico")
这不会产生任何问题,即使这两个文件(icon.ico、logo.png)与我转换为可执行文件的程序位于同一文件夹中。如果它有所作为,我在 Mac.
上 运行我目前使用的指令:
pyinstaller --noconfirm --onefile --console "[workspace]/src/gui.py" gui.spec
和我的规范文件:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['gui.py'],
pathex=['/Users/Freddie/Impruvon/guiwebscraperproject/venv/src'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
for d in a.datas:
if 'pyconfig' in d[0]:
a.datas.remove(d)
break
a.datas += [('logo.png','/Users/Freddie/Impruvon/guiwebscraperproject/venv/src/logo.png', 'Data')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='gui',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None )
好吧,我确定我已经尝试过了,但是通过从
pyinstaller --noconfirm --onefile --console --add-data "[workspace]/src/logo.png:." "[workspace]/src/gui.py"