我一直在tkinter中处理脚本,但是EXE无法在dist文件夹中创建
我已经以多种方式运行,第一种是pyinstaller.exe --onefile -w myscript.py
。
它将创建所有文件和文件夹,但dist文件夹中没有exe文件。然后,我以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.
答案 0 :(得分:0)
并不是真的将其发布为答案,但是这个小脚本使我的生活更轻松。
无需复制pyinstaller的exe,只需运行脚本并选择您的主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')