Как исправить Pyinstaller, создающий исполняемый файл, который не запускается

Я использую 32-битную версию Python 3.7.0. У меня проблемы с преобразованием скрипта в исполняемый файл. Pyinstaller успешно создает папки build и dist, и у меня есть исполняемый файл, но он ничего не делает, когда я его запускаю.

Я читал другие проблемы и использовал set Path=%Path%;C:\Windows\System32\downlevel; и я не получаю никаких предупреждений о моих dll-файлах, так что все в порядке. Я также пробовал на python 3.6.2 и столкнулся с теми же проблемами, я не уверен, что происходит.

Это программа Hello World, которую я пытался сделать:

import tkinter as tk
class Go:
    def __init__(self,root):
        self.master = root
        self.frame = tk.Frame(self.master)
        self.testLabel = tk.Label(self.frame,text='hello world')
        self.testLabel.grid(row=0,column=0)
        self.frame.pack()

def main():
    root = tk.Tk()
    root.geometry('600x600')
    app = Go(root)

if __name__ == '__main__':
    main()

Запуск pyinstaller:

C:\Users\kiern\AppData\Local\Programs\Python\Python37-32\Scripts>set Path=%Path%;C:\Windows\System32\downlevel;

C:\Users\kiern\AppData\Local\Programs\Python\Python37- 
32\Scripts>pyinstaller --onefile test.py
73 INFO: PyInstaller: 3.4
75 INFO: Python: 3.7.0
76 INFO: Platform: Windows-10-10.0.17763-SP0
77 INFO: wrote C:\Users\kiern\AppData\Local\Programs\Python\Python37- 
32\Scripts\test.spec
83 INFO: UPX is not available.
87 INFO: Extending PYTHONPATH with paths
['C:\\Users\\kiern\\AppData\\Local\\Programs\\Python\\Python37- 
32\\Scripts',
'C:\\Users\\kiern\\AppData\\Local\\Programs\\Python\\Python37- 
32\\Scripts']
87 INFO: checking Analysis
91 INFO: Building Analysis because Analysis-00.toc is non existent
91 INFO: Initializing module dependency graph...
96 INFO: Initializing module graph hooks...
100 INFO: Analyzing base_library.zip ...
4348 INFO: running Analysis Analysis-00.toc
4381 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
required by c:\users\kiern\appdata\local\programs\python\python37-32\python.exe
4792 INFO: Caching module hooks...
4798 INFO: Analyzing 
C:\Users\kiern\AppData\Local\Programs\Python\Python37-32\Scripts\test.py
4978 INFO: Loading module hooks...
4979 INFO: Loading module hook "hook-encodings.py"...
5081 INFO: Loading module hook "hook-pydoc.py"...
5084 INFO: Loading module hook "hook-xml.py"...
5360 INFO: Loading module hook "hook-_tkinter.py"...
5624 INFO: checking Tree
5627 INFO: Building Tree because Tree-00.toc is non existent
5629 INFO: Building Tree Tree-00.toc
5751 INFO: checking Tree
5754 INFO: Building Tree because Tree-01.toc is non existent
5755 INFO: Building Tree Tree-01.toc
5798 INFO: Looking for ctypes DLLs
5798 INFO: Analyzing run-time hooks ...
5803 INFO: Including run-time hook 'pyi_rth__tkinter.py'
5814 INFO: Looking for dynamic libraries
6094 INFO: Looking for eggs
6095 INFO: Using Python library 
c:\users\kiern\appdata\local\programs\python\python37-32\python37.dll
6096 INFO: Found binding redirects:
[]
6163 INFO: Warnings written to 
C:\Users\kiern\AppData\Local\Programs\Python\Python37- 
32\Scripts\build\test\warn-test.txt
6264 INFO: Graph cross-reference written to 
C:\Users\kiern\AppData\Local\Programs\Python\Python37- 
32\Scripts\build\test\xref-test.html
6323 INFO: checking PYZ
6323 INFO: Building PYZ because PYZ-00.toc is non existent
6324 INFO: Building PYZ (ZlibArchive) 
C:\Users\kiern\AppData\Local\Programs\Python\Python37- 
32\Scripts\build\test\PYZ-00.pyz
6937 INFO: Building PYZ (ZlibArchive) 
C:\Users\kiern\AppData\Local\Programs\Python\Python37- 
32\Scripts\build\test\PYZ-00.pyz completed successfully.
6947 INFO: checking PKG
6947 INFO: Building PKG because PKG-00.toc is non existent
6951 INFO: Building PKG (CArchive) PKG-00.pkg
9744 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
9812 INFO: Bootloader 
c:\users\kiern\appdata\local\programs\python\python37-32\lib\site- 
packages\PyInstaller\bootloader\Windows-32bit\run.exe
9812 INFO: checking EXE
9817 INFO: Building EXE because EXE-00.toc is non existent
9820 INFO: Building EXE from EXE-00.toc
9822 INFO: Appending archive to EXE 
C:\Users\kiern\AppData\Local\Programs\Python\Python37- 
32\Scripts\dist\test.exe
9832 INFO: Building EXE from EXE-00.toc completed successfully.

C:\Users\kiern\AppData\Local\Programs\Python\Python37-32\Scripts>

Моя ожидаемая цель - иметь исполняемый файл, который действительно что-то показывает. Любая помощь, пожалуйста?

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

Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
1 111
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Ваш код в порядке и работает без каких-либо ошибок, но вывод не отображается, потому что вы забыли добавить функцию mainloop() для отображения окна TK.

import tkinter as tk


class Go:
    def __init__(self, root):
        self.master = root
        self.frame = tk.Frame(self.master)
        self.testLabel = tk.Label(self.frame, text='hello world')
        self.testLabel.grid(row=0, column=0)
        self.frame.pack()
        # dont forget this
        self.master.mainloop()


def main():
    root = tk.Tk()
    root.geometry('600x600')
    Go(root)


if __name__ == '__main__':
    main()

Затем вы можете просто заморозить свое приложение с помощью pyinstaller -F script.py.

Боже мой, вы не представляете, как долго я возился с настройкой Pyinstaller, устанавливая путь и системные переменные для tk и tcl. Большое спасибо!!!! Я очень ценю это!

Kiernan 01.06.2019 20:01

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