Pyinstaller с customtkinter: исключение при запуске exe -> AttributeError: модуль «customtkinter» не имеет атрибута «CTk»

Я создал скрипт Python, который использует customtkinter для графического интерфейса, где пользователь может выбрать некоторые параметры.

Вот обзор импортированных пакетов: используемые библиотеки

Все работает правильно, когда я запускаю скрипт в Pycharm (Community Edition 2021.1.2), и графический интерфейс отображается, как и ожидалось.

Но после сборки (создания exe из скрипта) с помощью pyinstaller и запуска exe я получаю следующее сообщение об ошибке: Ошибка при запуске exe файла

Строка 403 делает задачу соотв. этому сообщению - соответствующая строка в скрипте выглядит так: Строка 403 вызывает ошибку

Для сборки exe я использую следующую команду: pyinstaller --noconfirm --onedir --windowed --add-data c:\users\myName\appdata\local\programs\python\python39\lib\site-packages\customtkinter;customtkinter\ DataAnalysisTool.py

Надеюсь, кто-нибудь может помочь!

Я ожидаю, что исполняемый файл также запускается, поскольку скрипт в Pycharm запускается без каких-либо проблем.

Обновление: минимальный воспроизводимый пример (выдает такое же сообщение об ошибке при запуске exe)

import customtkinter

# create the root window
root_file = customtkinter.CTk()
root_file.title('Data Analysis Tool - File Selection')
root_file.resizable(False, False)
root_file.geometry('350x150')

root_file.mainloop()

Смотрите это. Вы должны сделать как --add-data "c:/users/myName/appdata/local/programs/python/python39/lib/‌​site-packages/custom‌​tkinter;customtkinte‌​r/"

relent95 06.02.2023 04:10

@Alexander: я добавил минимальный воспроизводимый пример - см. выше.

schmisi 06.02.2023 09:27

@ relent95: это то, что я уже пробовал - см. команду, которую я использовал для сборки exe.

schmisi 06.02.2023 09:28

Я так понимаю, совет relent95 не помог?

Alexander 06.02.2023 09:28

точно не получилось.

schmisi 06.02.2023 14:15
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
5
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне удалось скомпилировать код вашего примера, выполнив следующие шаги:

  1. Создайте новую виртуальную среду и установите customtkinter и pyinstaller

  2. создайте файл main.py с вашим примером кода.

import customtkinter

# create the root window
root_file = customtkinter.CTk()
root_file.title('Data Analysis Tool - File Selection')
root_file.resizable(False, False)
root_file.geometry('350x150')

root_file.mainloop()
  1. беги pyinstaller -F main.py --collect-all customtkinter

Скомпилированный исполняемый файл запускается без ошибок.

Это работает и с опцией --onedir.

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