![](/img/trans.png)
[英]missing modules after converting .py to .exe with pyinstaller
[英]Exe file wont launch after converting .py to .exe with pyinstaller
我有一个 minecraft 项目,在使用以下命令将其转换为 exe 后:
pyinstaller "F:\pythonprojetcs\minecraft file mover\splashscreen.py" -F --icon="F:\pythonprojetcs\minecraft file mover\app.ico"
它不会启动。 这是错误:
Traceback (most recent call last):
File "splashscreen.py", line 21, in <module>
image = tk.PhotoImage(file=image_file)
File "tkinter\__init__.py", line 4064, in __init__
File "tkinter\__init__.py", line 4009, in __init__
_tkinter.TclError: couldn't open "C:\Users\REINER~1\AppData\Local\Temp\_MEI248722\data\image.png": no such file or directory
[4692] Failed to execute script splashscreen
当它是 .py 格式时,它工作正常,但有错误。 它说 tkinter 是错误,但我不明白。
编码:
# create a splash screen, 80% of display screen size, centered,
# displaying a GIF image with needed info, disappearing after 5 seconds
import os
import tkinter as tk
import shutil
import time
root = tk.Tk()
root.overrideredirect(True)
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
root.geometry('%dx%d+%d+%d' % (width*0.8, height*0.8, width*0.1, height*0.1))
image_file = os.path.dirname(__file__) + '\\data\\image.png'
image = tk.PhotoImage(file=image_file)
canvas = tk.Canvas(root, height=height*0.8, width=width*0.8, bg="brown")
canvas.create_image(width*0.8/2, height*0.8/2, image=image)
canvas.pack()
root.after(2000, root.destroy)
root.mainloop()
print("Világ vagy textúrát akkarsz? (világ = 1 / textúra = 2 / világ másolás = 3 / tutorial = 4)")
choosing = input()
if choosing == "1":
print("\n")
print("\n")
print("Ok, szóval világ.")
print("Hol van?")
original = input()
target = 'C:\\Users\\Refi\\AppData\\Roaming\\.minecraft\\saves'
shutil.move(original,target)
time.sleep(1)
print("Kész!")
print("Ha ezt írja ki: FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Reiner Regő\\Downloads\\test', akkor az a fálj nem létezik!")
print("Kérlek várj! Ne zárd be!")
time.sleep(3)
if choosing == "2":
print("\n")
print("\n")
print("Ok, szóval textúra.")
print("Hol van?")
original = input()
target = 'C:\\Users\\Refi\\AppData\\Roaming\\.minecraft\\resourcepacks'
shutil.move(original,target)
time.sleep(1)
print("Kész!")
print("Ha ezt írja ki: FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Reiner Regő\\Downloads\\test', akkor az a fálj nem létezik!")
print("Kérlek várj! Ne zárd be!")
time.sleep(3)
if choosing == "3":
print("\n")
print("\n")
print("Ok, szóval világot akarsz másolni.")
print("Mi a neve?")
inputfromuser = input()
original = 'C:\\Users\\Refi\\AppData\\Roaming\\.minecraft\\saves\\' + inputfromuser
target = 'D:'
shutil.move(original,target)
time.sleep(1)
print("Kész! A D:-ben fogod megtlálni!")
print("Ha ezt írja ki: FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Refi\\Downloads', akkor az a fálj nem létezik!")
print("Kérlek várj! Ne zárd be!")
time.sleep(3)
print('\n')
input("nyomd meg az entert a kilépéshez")
这将文件从一个目录复制到另一个目录,闪屏代码只是一个示例。 请帮忙!
您的脚本正在尝试从相对于脚本本身的目录访问图像文件; 这在脚本安装解包时有效,资源实际上在文件系统上。 但是当捆绑到一个可执行文件中时,它就不起作用了; 除非您将其与可执行文件一起复制,否则该图像不会存在(解决方案的丑陋破解); 您需要将其捆绑到可执行文件本身中,以便您的脚本可以在运行时提取它。
您需要阅读有关规范文件的文档,特别是添加数据文件(在构建时将数据与可执行文件捆绑)并使用模块中的数据文件(在运行时提取 memory 中的捆绑数据)。
您只能访问文件中的数据,它不再是磁盘上的文件,因此您需要使用其他加载方式,例如从 base64 编码数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.