【发布时间】:2020-05-04 21:41:12
【问题描述】:
我创建了一个名为 leaderboard 的 python 文件,并使用 pyinstaller 将它变成了一个 .exe 文件。这个 .exe 文件位于我的草图的数据文件夹中名为 dist 的文件夹中。我首先尝试使用 launch() 函数启动文件,虽然这没有给我任何错误,但它没有执行文件。
launch("data/dist/leaderboard.exe");
对于我的下一次尝试,我尝试使用 exec 函数。
exec("data/dist/leaderboard.exe");
这给了我错误代码:尝试 data/dist/leaderboard.exe 时出现异常
接下来,我决定在使用启动功能时使用完整的文件路径。
launch("C:/Users/Tahseen/Documents/cs corsework 2/Bloodlust/data/dist/leaderboard.exe");
这导致重复弹出标题为“检测到致命错误”和标题为“无法执行脚本排行榜”的弹出窗口。使用 exec() 也给了我这个结果。
经过研究,我发现一种适用于少数人的解决方案是使用双 \ 而不是单 / 但这对我没有任何作用。
我确认从文件夹中手动打开文件时可以正确执行,所以我认为问题出在我的代码中。
更新:我认为在前两种情况下无法找到文件 leaderboard.exe 但是我不知道为什么当我将随机字符串放在括号内时,同样的事情发生了。这让我想到了第二个问题:有没有办法从项目文件夹中执行文件,即没有整个文件路径?
【问题讨论】:
-
也许 exe 需要访问其他同级文件?您可能需要告诉
Process(launch()返回)使用哪个工作目录。试试this -
你是对的,exe文件在同一个文件夹中使用了2个文本文件。我如何将这一点告诉正在处理的进程?
-
我现在无法测试这个,但我会尝试上面链接中的 sn-p:
Process p = null; ProcessBuilder pb = new ProcessBuilder("leaderboard.exe"); pb.directory(new File("C:/Users/Tahseen/Documents/cs\ corsework\ 2/Bloodlust/data/dist/"));p = pb.start();或者你也可以尝试在你的 python 脚本中使用绝对路径,但它不是一个非常灵活的选择。 (通常还要注意空格和其他可能需要在 Java 中转义的特殊字符)。不幸的是,我目前无法提供详细的答案。希望这是有道理的/有人可以回答。
标签: processing