【发布时间】:2017-10-12 13:30:23
【问题描述】:
我的 Pygame 应用程序在 cx_Freeze 中编译为 msi 后从 .exe 文件完美运行,但是当我从桌面快捷方式运行它时,我收到错误:
快捷方式目标正确,声音文件都在正确的目录中,我尝试了.wav和.ogg文件并降低了比特率等,但似乎没有任何效果。令人沮丧的是,当我打开目标位置并手动运行.exe 时,它运行完美。我无法弄清楚为什么桌面快捷方式会导致错误。
这是我的setup.py 文件:
import sys
import cx_Freeze
base = None
if sys.platform == "win32":
base = "Win32GUI"
executables = [cx_Freeze.Executable(
script="a_bit_racey.py",
base=base,
icon="car_icon.ico",
shortcutName="A bit Racey",
shortcutDir="DesktopFolder")]
cx_Freeze.setup(
name="A bit Racey",
options={"build_exe": {"packages": ["pygame"],
"include_files": ["racecar.png", "Crash.ogg", "Ecstasy_X.ogg",
"car_icon.ico"]}},
executables=executables
)
我是否缺少快捷方式所需的 msi 属性?我已经坚持了一周。
编辑:这是一个可以更好地解释的屏幕截图,因为我得到的回应很少:
使用 cx_Freeze 创建的桌面快捷方式具有正确的目标位置,甚至似乎运行 .exe 文件,但随后出现错误。然而,当我打开目标位置并双击.exe 文件时,它运行良好!!
【问题讨论】:
-
cx-freeze.readthedocs.io/en/latest/faq.html#data-files 请确保在后台使用绝对路径,就像这个 cx_Freeze 文档似乎让我相信。显然在
"include_files"列表中这些是相对的。你有找到 f(x) 的 data_dir 吗? -
@seanmus:是的,作为构建设置脚本的一部分,所有数据文件都在“include_files”语句中正确命名。我不知道你所说的 f(x) 是什么意思。你能详细说明一下吗?
-
在“使用数据文件”一节中,您是否有类似于文档中提供的功能?
-
exe从文件夹运行正常的原因是工作目录。快捷方式不存在的原因是相同的。
-
@seanmus:我要道歉——它需要一些调整,我必须弄清楚在哪里调用代码,但你的原始评论是正确的。请将其添加为答案,我会评价它。我还将添加一条评论来解释我为使其工作所做的工作,因为互联网上几乎没有关于它的任何地方。谢谢!
标签: python python-3.x pygame pycharm