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 немедленно изменяет значок.