tkroot.tk.call() выдает ошибку после создания exe-файла

#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