Проблемы с Pyinstaller с приложением tkinter на python 3.5

2

Просто начинайте работу с Pyinstaller (и несколько с окном Tk) и не удается запустить мое приложение windows tkinter (под управлением python 3.5). Я, возможно, делаю что-то глупое, но я пробовал все, что знаю, и мне действительно нужно, чтобы это выполнялось, поэтому любая помощь очень ценится. Просто примечание, весь мой код работает нормально под обычным python 3.5.1 и 3.5.3. Установите последнюю версию PyInstaller (3.2.1), и она работает нормально.

Я переключился на следующий простой оконный "Hello World!". приложение, чтобы увидеть, могу ли я заставить это работать,

from tkinter import *
root = Tk()
root.title("Test Window")

#Setup window widgets and place on window
l1 = Label(root,text='Hello World!',font=("Verdana",18))
l2 = Label(root,text='Hello World!',font=("Times New Roman",9))
b1 = Button(root, text='Button 1', font=("Verdana",12), state=DISABLED)
b1.pack()
b1.place(x=220, y=180)

l1.pack()
l1.place(x=170, y=10)
l2.place(x=200, y=60)

root.mainloop()

но, похоже, он имеет те же проблемы, что и мое оригинальное приложение.

Может быть, это только потому, что я новичок в PyInstaller, но я не нахожу, что документы действительно легко найти конкретные ответы. Но, глядя немного глубже, я решил добавить параметр -d в командную строку, чтобы увидеть отладочный вывод, когда он пытался выполнить мое приложение, поэтому я использую полную командную строку: > pyinstaller -F -w -d c:\PythonApps\Hello.py. Это дало мне много информации, которая заканчивается в этом сообщении об ошибке:

Не удалось выполнить скрипт pyi_rth_tkinter.

Это была та же ошибка, что и для моей оригинальной программы. Мне удалось найти "pyi_rth_tkinter.py" в моей системе (на самом деле 2 версии файла), не знаю, почему PyInstaller испытывает проблемы с его исполнением. Но так как этот файл выплескивает сообщения об ошибках в файлах Tcl & Tk, угадав, что это все равно не получилось, даже если бы он нашел и запустил файл.

ОК, более внимательно глядя на результат во время работы PyInstaller, я вижу, что есть несколько строк, которые выглядят так, как будто они могут привести к моей проблеме:

3541 INFO: Loading module hook 'hook-_tkinter.py'
ImportError: cannot import name 'Tcl'
3659 ERROR: Tcl/Tk improperly installed on this system.

Я просмотрел файл hook -_tkinter.py (и прочитал документы PyInstaller), но ничего не увидел явно. Но я не полностью осведомлен о всех деталях файлов-крючков и о том, что они должны содержать (может ли кто-нибудь помочь с этим???). Непонятно, в чем проблема, но похоже, что PyInstaller имеет проблему со ссылкой на tkinter, и это приводит к тому, что мои приложения не запускаются. ПОТОМУ ЧТО ПРОСТО ПОЛЬЗОВАТЕЛЯ PyInstaller 3.2.1 ВЫПОЛНИТЬ ДАЖЕ ПРОСТОЙ PYTHON 3.5 WINDOWS APP? ЕСЛИ ТАК, ПОЖАЛУЙСТА, ОБРАТИТЕ КАК! Я проделал тонну поиска и чтения, но пока не смог выяснить, что еще проблема. Если у кого есть подсказка, пожалуйста, помогите. Любое руководство очень ценится!


Немного дополнительной информации. Не уверен, почему PyInstaller говорит, что Tcl/Tk установлен неправильно. Я только что установил Python 3.5.3 и tkinter был установлен автоматически. Выполнено 'tkinter._text()' в оболочке и, похоже, работает нормально. Все мои применения tkinter также работают нормально во всех версиях 3.5 при нормальном использовании python. Только проблема tkinter, с которой я столкнулась, связана с PyInstaller. Проверена точная версия Tcl/Tk, установленная с помощью tkinter.Tcl(). Eval ('info patchlevel') ', и она сообщила "8.6.4". Кто-нибудь знает о каких-либо других проблемах с установкой Tcl/Tk, которые могут быть проблемой? Я не делал ничего особенного для установки tkinter, я просто сделал обычную установку pyinstaller через "pip install pyinstaller" после выполнения новой установки "python 3.5.3". Было ли что-нибудь еще, что я должен был сделать? Любая помощь очень ценится !!!

Теги:
pyinstaller

2 ответа

4

У меня были проблемы с tkinter и python 3.5 после просмотра https://pythonhosted.org/PyInstaller/hooks.html#understanding-pyinstaller-hooks

добавьте опцию --hidden-import tkinter

pyinstaller --onefile --hidden-import tkinter hello.py

0

Я столкнулся с той же проблемой и застрял на 6 часов в поисках правильного ответа. Теперь он работает для меня после того, как я сделал следующие шаги:

  1. Удалите все интерпретаторы Python.
  2. Загрузите версию Python-2.7.16.amd64 (для 64-разрядных ОС) или версию Python-2.7.16 (для 32-разрядных ОС).
  3. Перейдите на этот компьютер → Расширенные настройки системы → Переменные среды
  4. Выберите Path и нажмите Edit.
  5. Добавьте следующие пути: C:\Python27\Scripts\b. C:\python27\
  6. Открыть cmd
  7. Типа "pip install pyinstaller"
  8. После установки pyinstaller перейдите в папку, где находится ваша программа (т.е. в графическом интерфейсе tkinter)

  9. В cmd введите:

    pyinstaller program.py

Это исправит ваши проблемы.

Решением, которое я нашел, было удаление всех интерпретаторов Python и установка версии 2.7.

PS Новое в stackoverflow

Ещё вопросы

Сообщество Overcoder
Наверх
Меню