【发布时间】:2017-05-29 13:12:32
【问题描述】:
问题
我试图将 python 文件转换为 EXE 文件,但是我似乎每次都遇到相同的问题,无论是 CX_Freeze 还是 Pyinstaller。我刚刚尝试使用 pyinstaller 并使用命令制作了一个 EXE 文件
pyinstaller --onefile thepyfile
一切正常。它在 dist 文件中创建 exe。但是,当我打开 exe 时,它会显示一个命令窗口,然后快速关闭。我设法捕捉到使用打印屏幕时出现的错误,它说 pygame 错误:无法打开图像 family.jpg。我正在使用 pygame 模块。
我尝试了什么?
我确保图像与我的 python 文件位于同一目录和同一文件夹中。当我运行它时,我的 .py 工作正常,它只是 exe。无论如何,只是为了确保在我使用
加入路径的路径中加载图像没有问题os.path.join
它再次适用于 py 文件,但它在 exe 中不起作用。我还检查了是否正确安装了 pyinstaller,它适用于其他不涉及导入图像的 exe 程序。我也确实尝试过创建一个文件夹然后使用
os.path.join(folder,file)
但它再次在 py 文件中有效,但在 pyinstaller/cx_freeze exe 中无效。
线索?
当我使用 CX__freeze 时,我发现 pygame 也无法导入图像。但是它给了我一个更大的错误案例,不确定它是否有用,但它可能是一个线索?
请帮忙
我已经遇到这个问题超过 5 周了,迫切需要帮助。
一些代码
这是我导入图像的方式(同样适用于 py 文件,但不适用于 exe)
family_image = pygame.image.load(os.path.join('folder',"family.jpg")).convert()
如果需要,我的 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
)
注意
我所有的图像都在一个单独的文件夹中,但可以通过我的 python 文件访问。
我也在使用 python 3.5
感谢您的回复
【问题讨论】:
-
您是否尝试过使用 pyinstaller
one directory选项并验证您需要的所有文件都在目录中? -
重新开始,要调试它,您应该在构建期间使用一个目录选项。去阅读那个选项。这是这里的第二个要点:github.com/pyinstaller/pyinstaller/wiki/…,标志在这里:pyinstaller.readthedocs.io/en/stable/…
-
我以前做过这个,我从你的脚本中看到的唯一主要区别是你在
"include_files"中包含了单个文件。我总是将所有文件(源文件除外)放在一个名为 Data 的文件夹中,然后执行"include_files":["Data"]。不过,您必须更改程序代码才能从 Data 文件夹加载文件。 -
命令
os.path.join("family.jpg")是无用的,因为它给出了结果"family.jpg"。要创建完整路径,您需要os.path.join(path_to_folder, "family.jpg") -
我按照你说的做了,并为图片创建了一个单独的文件夹,我确保它在常规 py 中可以正常工作,但是在我把它变成一个 exe 之后,它现在是 pygame 错误:无法打开文件夹/文件。
标签: python pygame pyinstaller cx-freeze