我有一个包含.png图像的tkinter程序。我已经使用pyinstaller和--onefile选项对其进行了编译,因此我必须在一个临时位置访问该映像。这是我正在使用的代码:
def resource_path(relative_path):
try:
base_path = sys._MEIPASS
except Exception as e:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
title = PhotoImage(file=resource_path("xgol.png"))
这是我的.spec文件:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['XGols.py'],
pathex=['C:\\Users\\Sam\\OneDrive\\Computing\\Python Projects\\FootballPredict'],
binaries=[],
datas=[('Ball.ico', 'Ball.ico'), ('xgol.png', 'xgol.png')],
hiddenimports=[],
hookspath=[],
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,
a.binaries,
a.zipfiles,
a.datas,
[],
name='XGols',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True , icon='Ball.ico')
要编译我使用的程序:
pyinstaller --onefile XGols.spec
This is the error that I get when I run the executable
_tkinter.TclError: couldn't open "C:\Users\Sam\AppData\Local\Temp\_MEI61842\xgol.png": permission denied
我尝试以管理员身份运行。
答案 0 :(得分:0)
在您的.spec
文件中,应列出其他数据文件,如下所示:
datas=[('Ball.ico', '.'), ('xgol.png', '.')]
每个元组都有两个值,两个值都必须是字符串:
- 第一个字符串指定文件或文件在系统中的位置。
- 第二个数字指定文件夹的名称,以在运行时包含文件。