Pyinstaller图像无法加载

abc*_*234 14 python pygame pyinstaller cx-freeze

问题

我试图将python文件转换为EXE文件,但是我似乎每次都遇到同样的问题,无论是CX_Freeze还是Pyinstaller.我刚刚尝试使用pyinstaller,并使用该命令创建了一个EXE文件

pyinstaller --onefile thepyfile
Run Code Online (Sandbox Code Playgroud)

一切正常.它在dist文件中创建exe.但是,当我打开exe时,它会向我显示一个命令窗口,然后快速关闭.我设法捕获错误即时通讯使用打印屏幕,它说pygame错误:无法打开图像family.jpg.我正在使用pygame模块.

我试过了什么?

Iv确保图像与我的python文件位于同一目录和相同的文件夹中.当我运行它时,我的.py工作正常,它只是exe.无论如何只是为了确保在我加入路径的路径中加载图像没有问题

os.path.join
Run Code Online (Sandbox Code Playgroud)

它再次适用于py文件,但它在exe中不起作用.我还检查了我是否正确安装了pyinstaller,它适用于其他不涉及导入图像的exe程序.我也尝试创建一个文件夹,然后使用

os.path.join(folder,file)
Run Code Online (Sandbox Code Playgroud)

但它再次在py文件中工作,但不是pyinstaller/cx_freeze exe.

线索?

当我在使用CX__freeze时,我发现pygame也无法导入图像.然而它给了我一个更大的错误案例,不确定它是否有用但它可能是一个线索?

在此输入图像描述

请帮忙

我已经遇到这个问题超过5个星期了,我迫切需要帮助.

一些代码

这是我导入图像的方式(再次在py文件中工作但不在exe文件中)

family_image = pygame.image.load(os.path.join('folder',"family.jpg")).convert()
Run Code Online (Sandbox Code Playgroud)

如果需要继承我的cx_Freeze setup.py,这也使exe文件仍然给我图像不能加载错误.

import cx_Freeze
import sys
import pygame
import random
import math
import os
os.environ['TCL_LIBRARY'] = "C:\\Program Files\\Python35\\tcl\\tc18.6"
os.environ['TK_LIBRARY'] = "C:\\Program Files\\Python35\\tcl\\tk8.6"


base = None

if sys.platform == 'win32':
    base = "Win32GUI"





executables = [cx_Freeze.Executable("Treg&Shelly.py",shortcutName="Cards",shortcutDir="DesktopFolder",base = base)]

cx_Freeze.setup(
    name = "HAPPY NEW YEARS",
    options = {"build_exe":{"packages":["pygame","random","math"],"excludes" : ['tcl','ttk','tkinter','Tkinter'],"include_files":["family.jpg","newyears.png"]}},
    version = "0.01",
    description = "New Years Card",
    executables = executables

    )
Run Code Online (Sandbox Code Playgroud)

注意

我的所有图像都在一个单独的文件夹中,但可以通过我的python文件访问.

我也使用python 3.5

谢谢你的回复

小智 0

您可以使用 py2exe 将 python 转换为可执行文件。到目前为止,这种方法对我来说很有效。

pte.py是脚本文件C:\Python\toexe>

  1. 导航C:\Python\toexe>
  2. xxx.pypython 文件放在同一目录中
  3. 编辑pte.py文件如下:

    ------------------------------------------

    从 distutils.core 导入设置

    导入py2exe

    setup(console=['xxx.py']) ## 对于 CLI 程序

    setup(windows=['xxx.py']) ### 对于 gui

    ------------------------------------------

  4. 执行这个命令:C:\Python\toexe> pte.py py2exe