Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 11.12.2022
Сообщений: 19

Проблема с pyinstaller, ошибка ImportError

19.10.2023, 15:17. Показов 473. Ответов 0

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, когда пытаюсь превратить .py в .exe c помощью pyinstaller -w fanoocno2.py, программа выводит ошибку (скинула фотографию) , а когда с помощью pyinstaller fanoocno2.py открывается и сразу закрывается командная строка

вот код программы:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
import tkinter as tk
from tkinter import filedialog
import os
 
 
class Node:
    def __init__(self, key, value):
        self.key = key
        self.value = value
        self.possibility = 0.0
        self.code = ""
 
 
class Encode:
    def __init__(self):
        self.frequencies = []
 
    def main(self):
        self.root = tk.Tk()
        self.root.title("Шифратор Шеннона-Фано")
        self.root.geometry("600x400")
 
        # Создание фрейма для контента
        content = tk.Frame(self.root)
        content.pack(pady=10)
 
        # Заголовок
        title = tk.Label(content, text="Шифратор Шеннона-Фано", font=("Helvetica", 16))
        title.pack()
 
        # Инструкция
        instructions = tk.Label(content, text="Убедитесь, что в вашем сообщении пробел заменен на '_'", fg="gray")
        instructions.pack()
 
        # Фрейм для кнопок
        buttons = tk.Frame(content)
        buttons.pack(pady=(10, 0))
 
        # Кнопка выбора файла
        choose_button = tk.Button(buttons, text="Выбрать файл", command=self.choose_file)
        choose_button.grid(row=0, column=0, padx=10)
 
        # Кнопка шифрования
        self.encode_button = tk.Button(buttons, text="Зашифровать", state=tk.DISABLED, command=self.encode)
        self.encode_button.grid(row=0, column=1, padx=10)
 
        # Кнопка очистки
        clear_button = tk.Button(buttons, text="Очистить", command=self.clear_data)
        clear_button.grid(row=0, column=2, padx=10)
 
        # Фрейм для кнопок загрузки
        downloads = tk.Frame(content)
        downloads.pack(pady=(5, 0))
 
        # Кнопка загрузки зашифрованного
        download_encoded = tk.Button(downloads, text="Скачать зашифрованное", command=self.download_encoded)
        download_encoded.grid(row=0, column=0, padx=10)
 
        # Кнопка загрузки кодов
        download_codes = tk.Button(downloads, text="Скачать коды", command=self.download_codes)
        download_codes.grid(row=0, column=1, padx=10)
 
        # Фрейм для результатов
        results = tk.Frame(content)
        results.pack(pady=(10, 0))
 
        # Метка и текстовое поле для зашифрованного текста
        self.encoded_label = tk.Label(results, text="Зашифрованный текст:")
        self.encoded_text = tk.Text(results, height=10, width=50)
        self.encoded_label.grid(row=0, column=0, sticky="w")
        self.encoded_text.grid(row=0, column=1, padx=10)
 
        # Метка и текстовое поле для кодов
        self.codes_label = tk.Label(results, text="Коды:")
        self.codes_text = tk.Text(results, height=10, width=50)
        self.codes_label.grid(row=1, column=0, sticky="w")
        self.codes_text.grid(row=1, column=1, padx=10)
 
        self.root.protocol("WM_DELETE_WINDOW", self.on_close)
        self.root.mainloop()
 
    def choose_file(self):
        file_path = filedialog.askopenfilename(filetypes=[("Текстовые файлы", "*.txt")])
        if file_path:
            self.file_path = file_path
            self.encode_button.config(state=tk.NORMAL)
 
    def encode(self):
        encode = Encode()
        operation = FileOperations()
        reference = operation.open_file(self.file_path, encoding='utf-8')
        line = None
 
        while (line := operation.read_file(reference)) != "":
            encode.calculate_frequency(line)
 
        encode.sort()
        encode.calculate_possibilities()
        encode.generate_codes(encode.frequencies)
 
        reference = operation.open_file(self.file_path, encoding='utf-8')
 
        while (line := operation.read_file(reference)) != "":
            operation.write_file(encode.encoding(line), "encoded.txt")
 
        operation.write_codes(encode.frequencies, "codes.bin")
        print("Файл зашифрован!")
 
        self.show_result()
 
    def show_result(self):
        with open("encoded.txt", 'r', encoding='utf-8') as encoded_file:
            self.encoded_text.delete("1.0", tk.END)
            self.encoded_text.insert(tk.END, encoded_file.read())
 
        with open("codes.bin", 'r', encoding='utf-8') as codes_file:
            self.codes_text.delete("1.0", tk.END)
            self.codes_text.insert(tk.END, codes_file.read())
 
    def calculate_frequency(self, line):
        for char in line:
            flag = True
            for node in self.frequencies:
                if node.key == char:
                    node.value += 1
                    flag = False
                    break
 
            if flag:
                self.frequencies.append(Node(char, 1))
 
    def sort(self):
        self.frequencies.sort(key=lambda x: x.value, reverse=True)
 
    def calculate_possibilities(self):
        total_letters = sum(node.value for node in self.frequencies)
        for node in self.frequencies:
            node.possibility = node.value / total_letters
 
    def generate_codes(self, nodes):
        if len(nodes) > 1:
            left = []
            right = []
            helper = self.Helper()
 
            stop = 1
            while stop < len(nodes):
                total_possibility = sum(node.possibility for node in nodes[:stop])
                if abs(total_possibility - helper.sum(nodes, stop)) <= 0.2:
                    for node in nodes[:stop]:
                        node.code += '0'
                        left.append(node)
 
                    for node in nodes[stop:]:
                        node.code += '1'
                        right.append(node)
 
                    break
 
                stop += 1
 
            self.generate_codes(left)
            self.generate_codes(right)
 
    def encoding(self, line):
        encoded = ""
        for char in line:
            for node in self.frequencies:
                if char == node.key:
                    encoded += node.code
 
        return encoded
 
    class Helper:
        @staticmethod
        def sum(rest_of_list, start):
            result = sum(node.possibility for node in rest_of_list[start:])
            return result
 
    def clear_data(self):
        encoded_file_path = "encoded.txt"
        codes_file_path = "codes.bin"
 
        if os.path.exists(encoded_file_path):
            os.remove(encoded_file_path)
            print(f"{encoded_file_path} удален!")
        else:
            print(f"{encoded_file_path} не найден!")
 
        if os.path.exists(codes_file_path):
            os.remove(codes_file_path)
            print(f"{codes_file_path} удален!")
        else:
            print(f"{codes_file_path} не найден!")
 
    def download_encoded(self):
        self.download_file("encoded.txt")
 
    def download_codes(self):
        self.download_file("codes.bin")
 
    def download_file(self, file_name):
        file_path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Текстовые файлы", "*.txt")])
        if file_path:
            with open(file_path, 'w', encoding='utf-8') as dest_file:
                with open(file_name, 'r', encoding='utf-8') as source_file:
                    dest_file.write(source_file.read())
            print(f"{file_name} загружен в {file_path}")
 
    def on_close(self):
        self.clear_data()
        self.root.destroy()
 
 
 
class FileOperations:
    @staticmethod
    def open_file(file_name, encoding='utf-8'):
        return open(file_name, 'r', encoding=encoding)
 
    @staticmethod
    def read_file(file):
        return file.readline().strip()
 
    @staticmethod
    def write_file(content, file_name):
        with open(file_name, 'a', encoding='utf-8') as file:
            file.write(content + '\n')
 
    @staticmethod
    def write_codes(nodes, file_name):
        with open(file_name, 'w', encoding='utf-8') as file:
            for node in nodes:
                file.write(f"{node.key}:{node.value}:{node.possibility}:{node.code}\n")
 
 
if __name__ == "__main__":
    #root = tk.Tk()
    app = Encode()
    app.main()
    input()
Миниатюры
Проблема с  pyinstaller, ошибка ImportError  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2023, 15:17
Ответы с готовыми решениями:

Проблема с pyinstaller
Приветствую, я установил pyinstaller через pip написало что всё установлено, а когда пишу pyinstall main.py то выдаёт ошибку...

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

Необычная проблема с pyinstaller
Всем здравствуйте! Я тут немного, так сказать, встрял. Нагуглить не смог, поэтому спрашиваю тут, возможно кто-то сталкивался. Итак,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2023, 15:17
Помогаю со студенческими работами здесь

Проблема с компиляцией скрипта pyinstaller
Есть статья на хабре https://habr.com/ru/post/575100/, я попытался ее скомпилировать, но постоянно пишет что не хватает модулей. Но модули...

Проблема с установкой Pyinstaller Версия Python 3.8.3
Проблема с установкой Pyinstaller Версия Python 3.8.3 ============================================ ...

Не работает PyInstaller (При установке PyInstaller не создаётся исполняемый файл)
День добрый всем программистам! :yahoo: Нужна помощь с библиотеками Python, а конкретно с PyInstaller :help: Создал небольшую...

Проблема с создание .exe файла с использованием pyinstaller
Привет, я пытаюсь создать .exe файл, который можно передать на любой компьютер и запустить, даже на тот, в котором нет интерпретатора...

Ошибка ImportError: cannot import name 'test' и __com__
Всем доброго времени суток, у меня возникла проблема при импорте функции &quot;test&quot; в исполнительном файле (Shif.py). В модуле настроек...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru