程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 pyinstaller 将 .py 转换为 .exe 后,exe 文件无法启动大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 pyinstaller 将 .py 转换为 .exe 后,exe 文件无法启动?

开发过程中遇到使用 pyinstaller 将 .py 转换为 .exe 后,exe 文件无法启动的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 pyinstaller 将 .py 转换为 .exe 后,exe 文件无法启动的解决方法建议,希望对你解决使用 pyinstaller 将 .py 转换为 .exe 后,exe 文件无法启动有所启发或帮助;

我有一个用于 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\\roaR_501_11845@ing\\.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\\roaR_501_11845@ing\\.minecraft\\resourcepacks'
    shutil.move(original,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\\roaR_501_11845@ing\\.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")

这从另一个目录复制文件,启动画面代码只是一个例子。 请帮忙!

解决方法

您的脚本试图从相对于脚本本身的目录访问图像文件;这在脚本安装解包时有效,资源实际上在文件系统上。但是当捆绑到一个可执行文件中时,那是行不通的;除非您将其与可执行文件一起复制(解决方案的丑陋黑客),否则图像不会存在;您需要将它捆绑到可执行文件本身中,以便您的脚本可以在运行时提取它。

您需要读取 the docs on spec files,特别是 adding data files(在构建时将数据与可执行文件捆绑在一起)和 using data files from a module(在运行时提取内存中的捆绑数据) .

您只能访问文件中的数据,它不再是磁盘上的文件,因此您需要use alternate means of loading,e.g. from base64 encoded data。

@H_696_36@

大佬总结

以上是大佬教程为你收集整理的使用 pyinstaller 将 .py 转换为 .exe 后,exe 文件无法启动全部内容,希望文章能够帮你解决使用 pyinstaller 将 .py 转换为 .exe 后,exe 文件无法启动所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。