Python 将ico文件添加到pyinstaller中的可执行文件
我在Python 将ico文件添加到pyinstaller中的可执行文件,python,tkinter,python-3.5,pyinstaller,Python,Tkinter,Python 3.5,Pyinstaller,我在python3.5 我正在使用pyintaller 我在窗口中添加了一个自定义图标,以替换tkinter的默认羽毛图标 from tkinter import * from tkinter import messagebox import webbrowser calculator = Tk() calculator.title("TBE Calculator") calculator.resizable(0, 0) iconFile = 'calculator.ico' calcula
python3.5
我正在使用pyintaller
我在窗口中添加了一个自定义图标,以替换tkinter的默认羽毛图标
from tkinter import *
from tkinter import messagebox
import webbrowser
calculator = Tk()
calculator.title("TBE Calculator")
calculator.resizable(0, 0)
iconFile = 'calculator.ico'
calculator.iconbitmap(default=iconFile)
直接运行program.py
文件时,图标工作正常
但是当使用
pyinstaller --onefile --windowed --icon=program.ico program.py
并从dist目录运行program.exe,它给出的错误如下
failed to execute script program
我也试过了
pyinstaller --onefile --windowed --icon=program.ico --add-data="calculator.ico;ico" program.py
但还是同样的错误
程序.spec文件
# -*- mode: python -*-
block_cipher = None
a = Analysis(['program.py'],
pathex=['C:\\Users\\anuj\\PycharmProjects\\YouTubePlayer\\Program'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='calculator',
debug=False,
strip=False,
upx=True,
console=False , icon='program.ico')
删除行calculator.iconbitmap(默认值=iconFile)
可以正常工作,但使用默认的羽化图标
如何将窗口图标文件包含在.exe可执行文件中?尝试为图标文件提供绝对路径,并通过
数据PyInstaller参数绑定.ico
文件
数据
应该是元组列表,如('what\u to\u bundle.ext','there\u to\u place\u it')
(请参阅),因此添加如下内容
...
binaries=[],
datas=[('calculator.ico', '.')],
hiddenimports=[],
...
因此,calculator.ico
将被放置在应用程序的根目录中(然后绑定到一个文件中,pyinstaller创建一个可执行文件,该文件提取临时文件夹中的所有文件,然后以一个目录模式正常运行)
接下来,您可以使用PyInstaller设置的sys.\u MEIPASS
变量从脚本中找到图标文件的路径(请参阅)。这应该可以做到:
import os
import sys
from tkinter import *
from tkinter import messagebox
import webbrowser
calculator = Tk()
calculator.title("TBE Calculator")
calculator.resizable(0, 0)
if getattr(sys, 'frozen', False):
application_path = sys._MEIPASS
elif __file__:
application_path = os.path.dirname(__file__)
iconFile = 'calculator.ico'
calculator.iconbitmap(default=os.path.join(application_path, iconFile))
calculator.mainloop()
我知道很晚了,但试着用
pyinstaller --onefile --windowed --icon program.ico program.py