PyInstaller EXE возвращается к исходному значку

Я создал автономный .exe файл с PyInstaller с помощью этой команды: 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 ответа

Решение

Я обычно использую pyinstaller --onefile -w --icon=имя значка.ico test.py.

Решение:

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

Работает хорошо, но .icoфайл должен находиться в той же директории, что и .exeфайл. Любые другие варианты тоже работают, но не пробовал удалять --onefile.

Примечание: --nameтребуется. Я не уверен, почему.

Предполагая 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')

Я нашел решение этой проблемы, оно может относиться и к вашему случаю. Смотрите здесь для соответствующего вопроса.

У меня была такая же проблема, я пробовал оба pyinstaller ... --icon=icon/path/icon.ico ... main.pyи редактирование pyinstaller.specфайл,

      exe = EXE(pyz,
          ...
          console=False , icon='C:\\icon\\path\\icon.ico')

Но ни одно из этих решений не работает.
Итак, как упоминалось в приведенной выше ссылке, изменение/переименование каталога /dist/ или переименование файла .exe немедленно изменяет значок.

Другие вопросы по тегам