PyInstaller可执行文件更改回原始图标

3
我使用以下命令使用PyInstaller创建了一个独立的.exe文件:pyinstaller --onefile -i "icon0.ico" test.py -w。当我打开dist文件夹并将exe文件复制或移动到其他文件夹时,它会失去我所用的图标并返回默认的PyInstaller图标。但是,如果我将文件重命名,则图标会保持不变,但我不能将其作为解决方案,因为我有其他依赖于我的exe具有特定文件名的文件。我使用Resource Hacker查看了图标内容,我将默认图标完全替换为我的图标,但保存后没有任何变化,仍然是旧的PyInstaller图标。我的.ico文件包含所有不同的256x256、128x128、64x64、48x48、32x32和16x16大小。请问我该怎么办?PyInstaller版本:3.4,Python版本:3.7.2。
4个回答

2
我通常使用:

最初的回答:

pyinstaller --onefile -w --icon=*icon name*.ico test.py

1

解决方案:

pyinstaller --noconfirm --onefile --name=filename --icon=icon.ico script.py

这个功能运行良好,但.ico文件必须与.exe文件在同一个目录下。其他选项也可以使用,但没有尝试过删除--onefile

注意:--name是必需的,我不确定为什么。


0
我找到了这个问题的解决方法,它可能也适用于你的情况。请看相关问题 这里
我遇到了同样的问题,我尝试了在pyinstaller ... --icon=icon/path/icon.ico ... main.py中加入图标路径和编辑pyinstaller.spec文件。
exe = EXE(pyz,
          ...
          console=False , icon='C:\\icon\\path\\icon.ico')

但是这些解决方案似乎都不起作用。
因此,如上面的链接所提到的,更改/重命名目录/dist/重命名.exe文件会立即更改图标。


0
假设使用Python 3.10,您需要在pyInstaller环境中使图标可识别。我的批处理文件如下:
<full_path>\pyinstaller -wF --onefile --add-binary myicon.ico;. --icon myicon.ico app.py 2> build_log.txt

在 Python 文件 app.py 中添加:

import os, sys
if getattr(sys, 'frozen', False):
    # If the application is run as a bundle, the PyInstaller bootloader
    # extends the sys module by a flag frozen=True and sets the app 
    # path into variable _MEIPASS'.
    application_path = sys._MEIPASS
else:
    application_path = os.path.dirname(os.path.abspath(__file__))

然后参考带有图标的位置:

os.path.join(application_path,'myicon.ico')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接