我正在从我的 Java 代码调用 Python 脚本。这是代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class JavaRunCommand {
public static void main(String args[]) throws IOException {
// set up the command and parameter
String pythonScriptPath = "my-path";
String[] cmd = new String[2];
cmd[0] = "python2.6";
cmd[1] = pythonScriptPath;
// create runtime to execute external command
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);
// retrieve output from python script
BufferedReader bfr = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String line = "";
while ((line = bfr.readLine()) != null) {
// display each output line form python script
System.out.println(line);
}
}
}
python.py 有效
import os from stat import * c = 5 print c
python.py 不起作用
import MySQLdb import os from stat import * c = 5 print c # some database code down
所以,我正处于一个关键阶段,我的启动有最后期限,我必须向客户展示我的 MVP 项目,我正在考虑这样调用 Python 脚本。当我在没有 dB 连接和 MySQLdb 库的情况下打印任何内容时,它会起作用。但是当我包含它们时,它不会运行 python 脚本。这里有什么问题。难道不应该运行处理所有输入的进程吗?我安装了 MySQLdb 并且脚本在没有 java 代码的情况下运行。
我知道这不是解决问题的最佳方法。但是为了向客户展示一些东西,我需要这个东西工作。有什么建议吗?
请您参考如下方法:
因此,我发现问题出在我在 Java 中传递以运行 python 程序的参数上。
第一个参数是 - python 2.6 但它应该只是 python 而不是某个版本号,因为 MySQLdB 和 python 存在兼容性问题。
我最终决定在 python 代码中使用 MySQL Python 连接器而不是 MySQLdB。它非常有效,问题得到了解决!
