Pyinstaller не создает исполняемый файл - PullRequest
0 голосов
/ 06 августа 2020

Я работал над сценарием в tkinter, и EXE не удается создать в папке dist.

Я выполнил несколько способов, первый - pyinstaller.exe --onefile -w myscript.py.

Он создает все файлы и папки, но в папке dist нет исполняемого файла. Затем я запустил его как pyinstaller.exe myscript.py, где я смог заставить его работать, но мои кнопки перестали работать. Я включил вывод ниже. В идеале хочу использовать первый вариант. Если вы хотите увидеть мой код, я могу опубликовать его. Я новичок в Python и tkinter.

Примечание: я скопировал pyinstaller.exe в папку, где он находился.

C:\Users\test\PycharmProjects\pass>pyinstaller.exe --onefile -w pass.py

199 INFO: PyInstaller: 3.6    
200 INFO: Python: 3.7.7
201 INFO: Platform: Windows-10-10.0.18362-SP0
206 INFO: wrote C:\Users\test\PycharmProjects\pass\pass.spec
210 INFO: UPX is not available.
217 INFO: Extending PYTHONPATH with paths
['C:\\Users\\test\\PycharmProjects\\pass',
'C:\\Users\\test\\PycharmProjects\\pass']

217 INFO: checking Analysis
220 INFO: Building Analysis because Analysis-00.toc is non existent
220 INFO: Initializing module dependency graph...
232 INFO: Caching module graph hooks...
244 INFO: Analyzing base_library.zip ...
3024 INFO: Processing pre-find module path hook   distutils
3032 INFO: distutils: retargeting to non-venv dir 'c:\\users\\test\\appdata\\local\\programs\\python\\python37-32\\lib'

4497 INFO: Caching module dependency graph...
4693 INFO: running Analysis Analysis-00.toc
4700 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable required by c:\users\test\appdata\local\programs\python\python37-32\python.exe

5068 INFO: Analyzing C:\Users\test\PycharmProjects\pass\pass.py
5220 INFO: Processing module hooks...
5220 INFO: Loading module hook "hook-distutils.py"...
5231 INFO: Loading module hook "hook-encodings.py"...
5450 INFO: Loading module hook "hook-pydoc.py"...
5453 INFO: Loading module hook "hook-sysconfig.py"...
5458 INFO: Loading module hook "hook-xml.py"...
5750 INFO: Loading module hook "hook-_tkinter.py"...
6236 INFO: checking Tree
6236 INFO: Building Tree because Tree-00.toc is non existent
6237 INFO: Building Tree Tree-00.toc
6367 INFO: checking Tree
6368 INFO: Building Tree because Tree-01.toc is non existent
6369 INFO: Building Tree Tree-01.toc
6417 INFO: Looking for ctypes DLLs
6417 INFO: Analyzing run-time hooks ...
6421 INFO: Including run-time hook 'pyi_rth__tkinter.py'
6434 INFO: Looking for dynamic libraries
7284 INFO: Looking for eggs
7285 INFO: Using Python library c:\users\test\appdata\local\programs\python\python37-32\python37.dll
7286 INFO: Found binding redirects:
[]

7290 INFO: Warnings written to C:\Users\test\PycharmProjects\pass\build\pass\warn-pass.txt
7340 INFO: Graph cross-reference written to C:\Users\test\PycharmProjects\pass\build\pass\xref-pass.html
7397 INFO: checking PYZ
7398 INFO: Building PYZ because PYZ-00.toc is non existent
7398 INFO: Building PYZ (ZlibArchive) C:\Users\test\PycharmProjects\pass\build\pass\PYZ-00.pyz
8029 INFO: Building PYZ (ZlibArchive) C:\Users\test\PycharmProjects\pass\build\pass\PYZ-00.pyz completed successfully.
8051 INFO: checking PKG
8051 INFO: Building PKG because PKG-00.toc is non existent
8052 INFO: Building PKG (CArchive) PKG-00.pkg
10983 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
11026 INFO: Bootloader C:\Users\test\AppData\Roaming\Python\Python37\site-packages\PyInstaller\bootloader\Windows-32bit\runw.exe
11027 INFO: checking EXE
11028 INFO: Building EXE because EXE-00.toc is non existent
11028 INFO: Building EXE from EXE-00.toc
11035 INFO: Appending archive to EXE C:\Users\test\PycharmProjects\pass\dist\pass.exe
11048 INFO: Building EXE from EXE-00.toc completed successfully.

1 Ответ

0 голосов
/ 06 августа 2020

На самом деле не отправляю это как ответ, но этот маленький скрипт облегчил мне жизнь.

Нет необходимости копировать exe pyinstaller, просто запустите скрипт и выберите свой основной файл python, чтобы сделать exe , он создает папки build и dist, в которых был запущен скрипт.

import sys, os
import tkinter as tk
from tkinter import filedialog

print(
    """
=======================================
Create a .exe file from a Python Script
=======================================

Select the Python script you want to create the .exe from:

""")

root = tk.Tk()
root.withdraw()

file = filedialog.askopenfilename(initialdir = "./", title = "Select file", filetypes = ((".py files","*.py"),
                                                                                         (".pyw files","*.pyw"),
                                                                                         (".spec","*.spec")))

if file == "." or file == None:
    sys.exit()

if file.endswith('.pyw'):
    #NORMAL
    cmd = ('pyinstaller.exe --windowed --onefile ' + '"' + file + '"')
    os.system(cmd)

elif file.endswith('.py'):   
    #NORMAL
    cmd = ('pyinstaller.exe --onefile ' + '"' + file + '"')
    os.system(cmd)

elif file.endswith('.spec'):
    cmd = ('pyinstaller.exe ' + '"' + file + '"')
    os.system(cmd)

os.system('pause')
...