【发布时间】:2019-04-09 22:38:46
【问题描述】:
每当按下我的 gui (swing) 上的按钮时,我都会尝试运行 python 脚本。但是,该脚本永远不会运行,我不知道如何解决这个问题。我知道脚本可以独立运行,它应该是 py 而不是 python,因为 windows 和我的文件系统 ntfs。
到目前为止,我一直在尝试使用可以总结如下的代码:
myBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Process p = Runtime.getRuntime().exec("py myScript.py");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
});
我不认为我可以 chmod ntfs 的东西,但我尝试通过右键单击 python 文件来设置权限并试图弄乱安全设置。用户对脚本的完全控制没有任何作用。
python 脚本有以下权限,我猜是我的代码不工作,因为它没有执行权限。
-rw-r--r--
【问题讨论】:
-
你能在执行的脚本周围打印堆栈跟踪吗? python脚本是否在同一目录下?
-
“脚本”本身不需要是可执行的,因为 Python 会自行加载并执行它。我个人不会使用
Runtime.exec,而是使用ProcessBuilder,它更具可配置性。您还应该确保您正在使用输出和错误流for example。您可能还会发现 this example 很有帮助 -
myScript.py是相对的。也许调用另一个exec变体将工作目录作为参数提供给它。 -
您可能需要再次调整工作目录,
ProcessBuilder进行救援。你也可以find this other example 有帮助 -
也许你应该看看这个过程的标准输出/错误,最终也提供一个标准输入......也试试
py本身是否被调用(用一个非常简单的脚本,例如将实际时间写入文件)((在 EDT 上进行长时间处理通常不是一个好主意))