Ошибка, с которой вы столкнулись, чаще всего возникает из-за того, что PyInstaller не может найти файл `icon.ico` во время выполнения исполняемого файла. Когда вы запускаете скрипт в режиме разработки, `icon.ico` доступен из текущей директории, но после сборки в исполняемый файл его нужно специально указать.
Вот как вы можете исправить это:
1. **Используйте правильный путь к файлу после сборки**: Для получения полного пути к ресурсам во время выполнения, используйте следующий код:
```python
import os
import sys
from tkinter import Tk
def resource_path(relative_path):
"""Получает абсолютный путь к ресурсам, поддерживая как стандартный запуск, так и запуск из exe."""
try:
# Поддержка для PyInstaller
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
root = Tk()
icon_path = resource_path("icon.ico")
root.iconbitmap(default=icon_path)
```
2. **Измените команду сборки**: Убедитесь, что файл `icon.ico` добавляется в исполняемый файл. Вы можете использовать параметр `--add-data`, чтобы убедиться, что он будет включен в сборку. Пример команды:
```bash
pyinstaller --name Analyzer --icon=icon.ico --add-data "icon.ico;." --noconsole --onefile main.py
```
Обратите внимание, что путь к файлу `icon.ico` нужно точно указать.
3. **Проверка и тестирование**: После внесения изменений и повторной сборки, протестируйте исполняемый файл, чтобы убедиться, что иконка загружается правильно.
Следуя этим шагам, вы должны успешно устранить ошибку, и ваша программа будет отображать иконку без проблем.