Не могу сделать EXE-файл из кода на Python

При использовании pyinstaller исполняемый файл собирается, однако не запускается, выдаёт ошибку. Вот сам код:

import flet as ft
import tracemalloc
import telegram_send
import asyncio


def main(page: ft.Page):
    page.title = "Сельскохозяйственный кальулятор"
    page.theme_mode = 'dark'
    page.vertical_alignment = 'center'
    page.horizontal_alignment = 'center'
    page.window.width = 1920
    page.window.height = 1080
    page.bgcolor = ft.colors.GREEN_800

    def change_fon(e):
        page.theme_mode = 'light' if page.theme_mode == 'dark' else 'dark'
        page.update()

    def validate(e):
        if all([calc_obl.value, calc_cult.value, calc_area.value]):
            calc_button.disabled = False
        else:
            calc_button.disabled = True
        page.update()

    user_label_pr = ft.Text(text_align=ft.TextAlign.CENTER, value='Приветствуем Вас в сельскохозяйственном калькуляторе!\nВ этом приложении реализован калькулятор для расчёта примерной \n доходности при посадки определённой культуры.\n \n Перед тем, как переключиться на сам калькулятор, рекомендуем Вам прочитать справку. \n Также, для переключения темы нужно нажать на иконку солнышка.', size=25, weight=ft.FontWeight.BOLD)
    user_fon_icbutton = ft.IconButton(ft.icons.SUNNY, on_click=change_fon, icon_size=30)

    user_label_spavka = ft.Text('Данный сельскохозяйственный калькулятор рассчитывает\nпримерную доходность от урожая определённой культуры. \n Для расчёт используются данные, которые были взяты из открытых источников.\n \n Для более точного расчёта можно использовать функцию *включить расширенный расчёт расходов*. \n В разблокировавшихся полях Вы должны вписать данные. \n Если по какому-то из предложенных полей у Вас нет данных, то там должен быть записан 0. \n \n В конечном итоге будет получен отчёт, \n в котором будут примерные расходы, примерная прибыль без учёта расходов, примерная чистая прибыль, \n а также использованное удобрение и средство защиты. \n\n Если у Вас возникли вопросы или пожелания, то отправьте их в окне *Обратная связь*', text_align=ft.TextAlign.CENTER, size=25, weight=ft.FontWeight.BOLD)

    calc_label = ft.Text(text_align=ft.TextAlign.CENTER, value='Калькулятор\n', size=30, weight=ft.FontWeight.BOLD)
    calc_obl = ft.Dropdown(
        width=200,
        options=[
            ft.dropdown.Option('Ростовская область'),
            ft.dropdown.Option('Другое')
        ], bgcolor= ft.colors.GREEN_800,
        on_change=validate
    )
    calc_cult = ft.Dropdown(
        width=200,
        options=[
            ft.dropdown.Option('Озимый ячмень'),
            ft.dropdown.Option('Яровой ячмень'),
            ft.dropdown.Option('Пшеница (3 класс)'),
            ft.dropdown.Option('Пшеница (4 класс)'),
            ft.dropdown.Option('Рожь'),
            ft.dropdown.Option('Кукуруза (на зерно)'),
            ft.dropdown.Option('Овёс'),
            ft.dropdown.Option('Просо'),
            ft.dropdown.Option('Гречиха'),
            ft.dropdown.Option('Рис'),
            ft.dropdown.Option('Сахарная свекла'),
            ft.dropdown.Option('Подсолнечник'),
            ft.dropdown.Option('Соя'),
            ft.dropdown.Option('Рапс')
        ], bgcolor= ft.colors.GREEN_800,
        on_change=validate
    )

    def dis_for_rash(e):
        if calc_fl.value == True:
            calc_rashod_ud.disabled = False
            calc_rashod_zah.disabled = False
            calc_rashod_wt.disabled = False
            calc_rashod_strah.disabled = False
            calc_rashod_rab.disabled = False
        else:
            calc_rashod_ud.disabled = True
            calc_rashod_zah.disabled = True
            calc_rashod_wt.disabled = True
            calc_rashod_strah.disabled = True
            calc_rashod_rab.disabled = True
        page.update()

    calc_area = ft.TextField(width=200, on_change=validate)
    calc_res = ft.Text(text_align=ft.TextAlign.CENTER, value='', size=15, weight=ft.FontWeight.BOLD)
    calc_fl = ft.Checkbox(label='Включить расширенный расчёт расходов.', value=False, on_change=dis_for_rash)
    calc_rashod_ud = ft.TextField(width=200, disabled=True)
    calc_rashod_zah = ft.TextField(width=200, disabled=True)
    calc_rashod_wt = ft.TextField(width=200, disabled=True)
    calc_rashod_strah = ft.TextField(width=200, disabled=True)
    calc_rashod_rab = ft.TextField(width=200, disabled=True)

    def send_msg(e):
        tracemalloc.start()
        a = obr_entry.value

        async def send_message():
            await telegram_send.send(messages=[a])

        asyncio.run(send_message())
        page.update()

    def validate_for_obr(e):
        if all([obr_entry.value]):
            obr_btn.disabled = False
        else:
            obr_btn.disabled = True
        page.update()

    obr = ft.Text(text_align=ft.TextAlign.CENTER, value='Если Вы хотите отправить отзыв, то напишите его в поле ниже. \n Также, укажите контактные данные, что бы мы с Вами связались!', size=20, weight=ft.FontWeight.BOLD)
    obr_entry = ft.TextField(width=400,  on_change=validate_for_obr, multiline=True)
    obr_btn = ft.ElevatedButton(text='Отправить', width=150, disabled=True, bgcolor= ft.colors.GREEN_900 ,on_click=send_msg)

    def calc(e):
        a1 = calc_obl.value
        if a1 == 'Ростовская область':
            a = calc_cult.value
            area = calc_area.value

            exp_ud = int(calc_rashod_ud.value) if calc_rashod_ud.value.strip() else 0
            exp_zah = int(calc_rashod_zah.value) if calc_rashod_zah.value.strip() else 0
            exp_wt = int(calc_rashod_wt.value) if calc_rashod_wt.value.strip() else 0
            exp_strah = int(calc_rashod_strah.value) if calc_rashod_strah.value.strip() else 0
            exp_rab = int(calc_rashod_rab.value) if calc_rashod_rab.value.strip() else 0

            if a == 'Озимый ячмень':
                ur, minst, maxst, pos = 3.1, 13640, 14960, 0.27
                ud, st = 'Суперфосфат', 88
                zah_nm, zah_st = 'Рубит Санти', 2352
            elif a == 'Яровой ячмень':
                ur, minst, maxst, pos = 1.38, 13640, 14960, 0.215
                ud, st = 'Суперфосфат', 88
                zah_nm, zah_st = 'Ансамбль', 1000
            elif a == 'Пшеница (3 класс)':
                ur, minst, maxst, pos = 2.4, 15620, 17160, 0.15
                ud, st = 'Карбамид мочевина', 104
                zah_nm, zah_st = 'Децис Эксперт', 4800
            elif a == 'Пшеница (4 класс)':
                ur, minst, maxst, pos = 2.4, 15070, 16610, 0.15
                ud, st = 'Карбамид мочевина', 104
                zah_nm, zah_st = 'Децис Эксперт', 4800
            elif a == 'Рожь':
                ur, minst, maxst, pos = 1.39, 11440, 12540, 0.15
                ud, st = 'Нитрофоска', 65
                zah_nm, zah_st = 'Комфорт Лисстера', 1100
            elif a == 'Кукуруза (на зерно)':
                ur, minst, maxst, pos = 5.44, 13900, 15500, 0.017
                ud, st = 'Карбамид мочевина', 104
                zah_nm, zah_st = 'Всполох Лисстера', 1000
            elif a == 'Овёс':
                ur, minst, maxst, pos = 2.86, 16000, 16000, 0.19
                ud, st = 'Калий сернокислый', 135
                zah_nm, zah_st = 'Беномил 500', 1830
            elif a == 'Просо':
                ur, minst, maxst, pos = 0.99, 15000, 19500, 0.025
                ud, st = 'Азофоска', 92
                zah_nm, zah_st = 'Аминопелик', 500
            elif a == 'Гречиха':
                ur, minst, maxst, pos = 4.7, 16000, 20000, 0.09
                ud, st = 'Монокалийфосфат', 334
                zah_nm, zah_st = 'Аминопелик', 500
            elif a == 'Рис':
                ur, minst, maxst, pos = 6.21, 18000, 27000, 0.216
                ud, st = 'Азофоска', 92
                zah_nm, zah_st = 'ФАЛЬКОН Bayer', 2300
            elif a == 'Сахарная свекла':
                ur, minst, maxst, pos = 29.6, 10000, 15000, 0.009
                ud, st = 'Азофоска', 92
                zah_nm, zah_st = 'Комфорт Лисстера', 1100
            elif a == 'Подсолнечник':
                ur, minst, maxst, pos = 2.12, 8000, 13500, 0.006
                ud, st = 'Азофоска', 92
                zah_nm, zah_st = 'Кобра Агрорус', 2000
            elif a == 'Соя':
                ur, minst, maxst, pos = 1.0, 10500, 14500, 0.1
                ud, st = 'Суперфосфат двойной', 101
                zah_nm, zah_st = 'Гезагард', 1476
            elif a == 'Рапс':
                ur, minst, maxst, pos = 2.94, 30000, 33000, 0.22
                ud, st = 'Борофоска', 88
                zah_nm, zah_st = 'Девринол', 790

            rash_ud = int(exp_ud) * st
            rash_zah = int(exp_zah) * zah_st

            rash = ((minst * pos * int(area)) + rash_ud + rash_zah + int(exp_wt) + int(exp_rab) + int(exp_strah))
            itog = int(area) * ur * maxst
            pr = itog - rash
            print(rash, itog, pr)

            calc_res.value = f'На посадку семян на {area} гектар уйдёт {rash:.0f} рублей.\n С {area} гектаров вы можете получить до {itog:.0f} рублей.\n Чистая прибыль с {area} гектаров составляет {pr:.0f} рублей.'

            if exp_ud > 0:
                calc_res.value += f'\n Рекомендованное удобрение: {ud}'
            if exp_zah > 0:
                calc_res.value += f'\n Рекомендованное средство защиты: {zah_nm}'
        else:
            calc_res.value = 'Что-то пошло не так.'
        page.update()

    calc_button = ft.ElevatedButton(text='Посчитать', width=150, disabled=True, bgcolor=ft.colors.GREEN_900 ,on_click=calc)

    panel_pr = ft.Row(
        [ft.Column(
            [
                user_label_pr,
            ], alignment=ft.MainAxisAlignment.CENTER
        )], alignment=ft.MainAxisAlignment.CENTER
    )

    panel_pr_1 = ft.Row([user_fon_icbutton], alignment=ft.MainAxisAlignment.CENTER)

    panel_spravka = ft.Row([ft.Column([user_label_spavka], alignment=ft.MainAxisAlignment.CENTER)], alignment=ft.MainAxisAlignment.CENTER)
    panel_calc = ft.ListView(
        controls=[
            calc_label,
            ft.Text(value='Выберите область:', weight=ft.FontWeight.BOLD),
            calc_obl,
            ft.Text(value='Выберите культуру:', weight=ft.FontWeight.BOLD),
            calc_cult,
            ft.Text(value='Введите количество гектар:', weight=ft.FontWeight.BOLD),
            calc_area,
            calc_fl,
            ft.Text(value='Введите вес купленного удобрения (в кг.):', weight=ft.FontWeight.BOLD),
            calc_rashod_ud,
            ft.Text(value='Введите количество средства защиты (в л.):', weight=ft.FontWeight.BOLD),
            calc_rashod_zah,
            ft.Text(value='Введите расходы на воду (в руб.):', weight=ft.FontWeight.BOLD),
            calc_rashod_wt,
            ft.Text(value='Введите расходы на страхование (в руб.):', weight=ft.FontWeight.BOLD),
            calc_rashod_strah,
            ft.Text(value='Введите расходы на рабочих (в руб.):', weight=ft.FontWeight.BOLD),
            calc_rashod_rab
        ],
        width=500,
        height=500
    )

    panel_but = ft.Row(
        [calc_button], alignment=ft.MainAxisAlignment.CENTER
    )

    panel_res = ft.Row(
        [calc_res], alignment=ft.MainAxisAlignment.CENTER
    )

    def navigate(e):
        index = page.navigation_bar.selected_index
        page.clean()

        if index == 0: page.add(panel_pr, panel_pr_1)
        elif index == 1: page.add(panel_spravka)
        elif index == 2: page.add(panel_calc, panel_but, panel_res)
        elif index == 3: page.add(obr, obr_entry, obr_btn)
        page.update()

    page.navigation_bar = ft.NavigationBar(
        destinations=[
            ft.NavigationBarDestination(icon=ft.icons.MAN, label='Приветствие', bgcolor=ft.colors.GREEN_800),
            ft.NavigationBarDestination(icon=ft.icons.BOOK, label='Справка', bgcolor=ft.colors.GREEN_800),
            ft.NavigationBarDestination(icon=ft.icons.CALCULATE, label='Калькулятор', bgcolor=ft.colors.GREEN_800),
            ft.NavigationBarDestination(icon=ft.icons.SEND, label='Обратная связь', bgcolor=ft.colors.GREEN_800)
        ], on_change=navigate, bgcolor=ft.colors.GREEN_900, indicator_color=ft.colors.GREEN_800
    )

    page.add(panel_pr, panel_pr_1)


ft.app(target=main)

Вот ошибка:

Traceback (most recent call last):
File "aks.py", line 262, in <module> File "flet\app.py" line 64, in app
File "asyncio\runners.py", line 194, in run
File "asyncio\runners.py", line 118, in run
File "asyncio\base_events.py", line 664, in run_until_complete File "flet\app.py", line 189, in app_async
File "flet_desktop\__init__.py", line 43, in open_flet_view_async
File "asyncio\subprocess.py", line 222, in create_subprocess_exec
File "asyncio\base_events.py", line 1708, in subprocess_exec
File "asyncio\windows_events.py", line 399, in _make_subprocess_transport File "asyncio\base_subprocess.py", line 36, in __init__ File "asyncio\windows_events.py", line 873, in _start
File "asyncio\windows_utils.py", line 153, in __init__
File "subprocess.py", line 1026, in __init__
File "subprocess.py", line 1538, in _execute_child
FileNotFoundError: [WinError 2] He удается найти указанный þайл
[PYI-6668: ERROR] Failed to execute script 'aks' due to unhandled exception!

Ответы (0 шт):