#python-3.x #tkinter #drag-and-drop #pyinstaller
#python-3.x #tkinter #перетаскивание #pyinstaller
Вопрос:
Мой файл .py работает без ошибок. Но после создания exe-файла с помощью pyinstaller и при запуске exe-файла он выдает следующую ошибку;
File "site-packagesTkinterDnD2TkinterDnd.py, line 271, in __init__
File "site-packagesTkinterDnD2TkinterDnd.py, line 41, in _require
RuntimeError: Unable to load tkdnd library.
Я проверил строки, упомянутые выше в TkinterDnd.py и обнаружил, что это вызывает ошибку во время выполнения из-за функции tkroot.tk.call().
Пожалуйста, помогите мне исправить эту ошибку.
Комментарии:
1. для чего вы используете
tkroot.tk.call()
. Мне понравилось, чтоtk.call()
обычно это не то, что вам нужно.2. tk.call() используется в TkinterDnd.py файл, который находится в папке TkinterDnD2. В моем коде я не использовал эту функцию.
3. Жужжание. Вы пробовали создавать exe-файл с помощью cx_Freeze. У меня были проблемы с pyinstaller, и я обнаружил, что cx_Freeze работает лучше в моем случае.
4. Это дает
KeyError: 'TCL_LIBRARY'
. pyinstaller, по крайней мере, генерирует exe-файл, которого cx_Freeze не делает.5. Затем вам нужно исправить ошибку. При компиляции exe-файла может возникнуть много проблем. Лично мне пришлось вручную копировать библиотеки DLL TCL TK в папку exe и указывать много импорта за пределами импортируемых основных библиотек из-за проблем с зависимостями. Если вы неправильно настроили свой
setup.py
файл, он завершится ошибкой. Вам нужно будет указать ошибку, которую вы видите, если вы хотите получить обратную связь по этому поводу.
Ответ №1:
При сборке EXE с помощью pyinstaller попробуйте добавить
—скрытый импорт TkinterDnD2