我有一个tkinter程序,其中包括一个.png图像。我已经使用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)
个字符
下面是我的.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
型
我试过当管理员。
2条答案
按热度按时间lf3rwulv1#
在您的
.spec
文件中,其他数据文件应该像这样列出:字符串
从文档中:
每个元组有两个值,这两个值都必须是字符串:
dddzy1tm2#
如果文件未找到错误:使用MEIPASS 2代替MEIPASS或反之亦然,然后\代替/(如果需要)。
我觉得这样比较容易:
字符串
更换
型
与
型
在终端类型:
型
或在windows CMD中(在cmd中安装pyinstaller后)键入:
型
可执行文件将在名为“dist”的新文件夹中提供。
现在复制所有的从属文件夹到“dist”文件夹
运行.exe,如果一切正常,然后压缩文件夹以共享。
删除Build and Dist文件夹以及任何.spec文件沿着。
更换
型
回
型
要进一步将其转换为安装程序安装文件,请使用“inno setup”软件。